home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1991-10-20 | 44.4 KB | [ TEXT/MPS ]
open in: MacOS 8.1
extracted
|
Win98
extracted
|
DOS
extracted
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary ).
You can browse this item here: regex.c
Confidence Program Detection Match Type Support
66%
dexvert
Compact Compressed (Unix) (archive/compact)
ext
Supported
10%
dexvert
MacBinary (archive/macBinary)
fallback
Supported
1%
dexvert
Text File (text/txt)
fallback
Supported
100%
file
MacBinary II, Sun Oct 20 01:04:51 1991, modified Sun Oct 20 01:04:51 1991, creator 'MPS ', type ASCII, 44899 bytes "regex.c" , at 0xafe3 328 bytes resource
default (weak)
99%
file
data
default
74%
TrID
Macintosh plain text (MacBinary)
default
25%
TrID
MacBinary 2
default (weak)
100%
siegfried
fmt/1762 MacBinary (II)
default
100%
lsar
MacBinary
default
id metadata key value macFileType [ TEXT] macFileCreator [ MPS ]
hex view +--------+-------------------------+-------------------------+--------+--------+ |00000000| 00 07 72 65 67 65 78 2e | 63 00 00 00 00 00 00 00 |..regex.|c.......| |00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......| |00000050| 00 00 00 00 00 af 63 00 | 00 01 48 a5 26 be f3 a5 |......c.|..H.&...| |00000060| 26 be f3 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |&.......|........| |00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 1e 82 00 00 |........|........| |00000080| 2f 2a 20 20 54 68 69 73 | 20 66 69 6c 65 20 68 61 |/* This| file ha| |00000090| 73 20 62 65 65 6e 20 63 | 68 61 6e 67 65 64 2d 2d |s been c|hanged--| |000000a0| 20 69 74 20 69 73 20 6e | 6f 74 20 74 68 65 20 73 | it is n|ot the s| |000000b0| 74 61 6e 64 61 72 64 20 | 46 53 46 20 76 65 72 73 |tandard |FSF vers| |000000c0| 69 6f 6e 2e 0d 0d 20 20 | 20 20 20 20 20 20 20 20 |ion... | | |000000d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 4f | | O| |000000e0| 63 74 20 31 39 39 31 2e | 20 20 2a 2f 0d 0d 0d 2f |ct 1991.| */.../| |000000f0| 2a 20 45 78 74 65 6e 64 | 65 64 20 72 65 67 75 6c |* Extend|ed regul| |00000100| 61 72 20 65 78 70 72 65 | 73 73 69 6f 6e 20 6d 61 |ar expre|ssion ma| |00000110| 74 63 68 69 6e 67 20 61 | 6e 64 20 73 65 61 72 63 |tching a|nd searc| |00000120| 68 20 6c 69 62 72 61 72 | 79 2e 0d 20 20 20 43 6f |h librar|y.. Co| |00000130| 70 79 72 69 67 68 74 20 | 28 43 29 20 31 39 38 35 |pyright |(C) 1985| |00000140| 2c 20 31 39 38 39 20 46 | 72 65 65 20 53 6f 66 74 |, 1989 F|ree Soft| |00000150| 77 61 72 65 20 46 6f 75 | 6e 64 61 74 69 6f 6e 2c |ware Fou|ndation,| |00000160| 20 49 6e 63 2e 0d 0d 20 | 20 20 54 68 69 73 20 70 | Inc... | This p| |00000170| 72 6f 67 72 61 6d 20 69 | 73 20 66 72 65 65 20 73 |rogram i|s free s| |00000180| 6f 66 74 77 61 72 65 3b | 20 79 6f 75 20 63 61 6e |oftware;| you can| |00000190| 20 72 65 64 69 73 74 72 | 69 62 75 74 65 20 69 74 | redistr|ibute it| |000001a0| 20 61 6e 64 2f 6f 72 20 | 6d 6f 64 69 66 79 0d 20 | and/or |modify. | |000001b0| 20 20 69 74 20 75 6e 64 | 65 72 20 74 68 65 20 74 | it und|er the t| |000001c0| 65 72 6d 73 20 6f 66 20 | 74 68 65 20 47 4e 55 20 |erms of |the GNU | |000001d0| 47 65 6e 65 72 61 6c 20 | 50 75 62 6c 69 63 20 4c |General |Public L| |000001e0| 69 63 65 6e 73 65 20 61 | 73 20 70 75 62 6c 69 73 |icense a|s publis| |000001f0| 68 65 64 20 62 79 0d 20 | 20 20 74 68 65 20 46 72 |hed by. | the Fr| |00000200| 65 65 20 53 6f 66 74 77 | 61 72 65 20 46 6f 75 6e |ee Softw|are Foun| |00000210| 64 61 74 69 6f 6e 3b 20 | 65 69 74 68 65 72 20 76 |dation; |either v| |00000220| 65 72 73 69 6f 6e 20 31 | 2c 20 6f 72 20 28 61 74 |ersion 1|, or (at| |00000230| 20 79 6f 75 72 20 6f 70 | 74 69 6f 6e 29 0d 20 20 | your op|tion). | |00000240| 20 61 6e 79 20 6c 61 74 | 65 72 20 76 65 72 73 69 | any lat|er versi| |00000250| 6f 6e 2e 0d 0d 20 20 20 | 54 68 69 73 20 70 72 6f |on... |This pro| |00000260| 67 72 61 6d 20 69 73 20 | 64 69 73 74 72 69 62 75 |gram is |distribu| |00000270| 74 65 64 20 69 6e 20 74 | 68 65 20 68 6f 70 65 20 |ted in t|he hope | |00000280| 74 68 61 74 20 69 74 20 | 77 69 6c 6c 20 62 65 20 |that it |will be | |00000290| 75 73 65 66 75 6c 2c 0d | 20 20 20 62 75 74 20 57 |useful,.| but W| |000002a0| 49 54 48 4f 55 54 20 41 | 4e 59 20 57 41 52 52 41 |ITHOUT A|NY WARRA| |000002b0| 4e 54 59 3b 20 77 69 74 | 68 6f 75 74 20 65 76 65 |NTY; wit|hout eve| |000002c0| 6e 20 74 68 65 20 69 6d | 70 6c 69 65 64 20 77 61 |n the im|plied wa| |000002d0| 72 72 61 6e 74 79 20 6f | 66 0d 20 20 20 4d 45 52 |rranty o|f. MER| |000002e0| 43 48 41 4e 54 41 42 49 | 4c 49 54 59 20 6f 72 20 |CHANTABI|LITY or | |000002f0| 46 49 54 4e 45 53 53 20 | 46 4f 52 20 41 20 50 41 |FITNESS |FOR A PA| |00000300| 52 54 49 43 55 4c 41 52 | 20 50 55 52 50 4f 53 45 |RTICULAR| PURPOSE| |00000310| 2e 20 20 53 65 65 20 74 | 68 65 0d 20 20 20 47 4e |. See t|he. GN| |00000320| 55 20 47 65 6e 65 72 61 | 6c 20 50 75 62 6c 69 63 |U Genera|l Public| |00000330| 20 4c 69 63 65 6e 73 65 | 20 66 6f 72 20 6d 6f 72 | License| for mor| |00000340| 65 20 64 65 74 61 69 6c | 73 2e 0d 0d 20 20 20 59 |e detail|s... Y| |00000350| 6f 75 20 73 68 6f 75 6c | 64 20 68 61 76 65 20 72 |ou shoul|d have r| |00000360| 65 63 65 69 76 65 64 20 | 61 20 63 6f 70 79 20 6f |eceived |a copy o| |00000370| 66 20 74 68 65 20 47 4e | 55 20 47 65 6e 65 72 61 |f the GN|U Genera| |00000380| 6c 20 50 75 62 6c 69 63 | 20 4c 69 63 65 6e 73 65 |l Public| License| |00000390| 0d 20 20 20 61 6c 6f 6e | 67 20 77 69 74 68 20 74 |. alon|g with t| |000003a0| 68 69 73 20 70 72 6f 67 | 72 61 6d 3b 20 69 66 20 |his prog|ram; if | |000003b0| 6e 6f 74 2c 20 77 72 69 | 74 65 20 74 6f 20 74 68 |not, wri|te to th| |000003c0| 65 20 46 72 65 65 20 53 | 6f 66 74 77 61 72 65 0d |e Free S|oftware.| |000003d0| 20 20 20 46 6f 75 6e 64 | 61 74 69 6f 6e 2c 20 49 | Found|ation, I| |000003e0| 6e 63 2e 2c 20 36 37 35 | 20 4d 61 73 73 20 41 76 |nc., 675| Mass Av| |000003f0| 65 2c 20 43 61 6d 62 72 | 69 64 67 65 2c 20 4d 41 |e, Cambr|idge, MA| |00000400| 20 30 32 31 33 39 2c 20 | 55 53 41 2e 0d 0d 0d 20 | 02139, |USA.... | |00000410| 20 20 49 6e 20 6f 74 68 | 65 72 20 77 6f 72 64 73 | In oth|er words| |00000420| 2c 20 79 6f 75 20 61 72 | 65 20 77 65 6c 63 6f 6d |, you ar|e welcom| |00000430| 65 20 74 6f 20 75 73 65 | 2c 20 73 68 61 72 65 20 |e to use|, share | |00000440| 61 6e 64 20 69 6d 70 72 | 6f 76 65 20 74 68 69 73 |and impr|ove this| |00000450| 20 70 72 6f 67 72 61 6d | 2e 0d 20 20 20 59 6f 75 | program|.. You| |00000460| 20 61 72 65 20 66 6f 72 | 62 69 64 64 65 6e 20 74 | are for|bidden t| |00000470| 6f 20 66 6f 72 62 69 64 | 20 61 6e 79 6f 6e 65 20 |o forbid| anyone | |00000480| 65 6c 73 65 20 74 6f 20 | 75 73 65 2c 20 73 68 61 |else to |use, sha| |00000490| 72 65 20 61 6e 64 20 69 | 6d 70 72 6f 76 65 0d 20 |re and i|mprove. | |000004a0| 20 20 77 68 61 74 20 79 | 6f 75 20 67 69 76 65 20 | what y|ou give | |000004b0| 74 68 65 6d 2e 20 20 20 | 48 65 6c 70 20 73 74 61 |them. |Help sta| |000004c0| 6d 70 20 6f 75 74 20 73 | 6f 66 74 77 61 72 65 2d |mp out s|oftware-| |000004d0| 68 6f 61 72 64 69 6e 67 | 21 20 20 2a 2f 0d 0d 0d |hoarding|! */...| |000004e0| 2f 2a 20 54 6f 20 74 65 | 73 74 2c 20 63 6f 6d 70 |/* To te|st, comp| |000004f0| 69 6c 65 20 77 69 74 68 | 20 2d 44 74 65 73 74 2e |ile with| -Dtest.| |00000500| 0d 20 54 68 69 73 20 44 | 74 65 73 74 61 62 6c 65 |. This D|testable| |00000510| 20 66 65 61 74 75 72 65 | 20 74 75 72 6e 73 20 74 | feature| turns t| |00000520| 68 69 73 20 69 6e 74 6f | 20 61 20 73 65 6c 66 2d |his into| a self-| |00000530| 63 6f 6e 74 61 69 6e 65 | 64 20 70 72 6f 67 72 61 |containe|d progra| |00000540| 6d 0d 20 77 68 69 63 68 | 20 72 65 61 64 73 20 61 |m. which| reads a| |00000550| 20 70 61 74 74 65 72 6e | 2c 20 64 65 73 63 72 69 | pattern|, descri| |00000560| 62 65 73 20 68 6f 77 20 | 69 74 20 63 6f 6d 70 69 |bes how |it compi| |00000570| 6c 65 73 2c 0d 20 74 68 | 65 6e 20 72 65 61 64 73 |les,. th|en reads| |00000580| 20 61 20 73 74 72 69 6e | 67 20 61 6e 64 20 73 65 | a strin|g and se| |00000590| 61 72 63 68 65 73 20 66 | 6f 72 20 69 74 2e 20 20 |arches f|or it. | |000005a0| 2a 2f 0d 0d 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |*/..#inc|lude <st| |000005b0| 64 6c 69 62 2e 68 3e 0d | 23 69 6e 63 6c 75 64 65 |dlib.h>.|#include| |000005c0| 20 22 63 6f 6d 6d 6f 6e | 2e 68 22 0d 0d 65 78 74 | "common|.h"..ext| |000005d0| 65 72 6e 20 76 6f 69 64 | 20 2a 61 6c 6c 6f 63 61 |ern void| *alloca| |000005e0| 28 29 3b 0d 0d 23 69 66 | 64 65 66 20 55 53 47 0d |();..#if|def USG.| |000005f0| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 72 69 6e 67 |#include| <string| |00000600| 2e 68 3e 0d 23 64 65 66 | 69 6e 65 20 62 63 6f 70 |.h>.#def|ine bcop| |00000610| 79 28 73 2c 64 2c 6e 29 | 09 6d 65 6d 63 70 79 28 |y(s,d,n)|.memcpy(| |00000620| 28 64 29 2c 28 73 29 2c | 28 6e 29 29 0d 23 64 65 |(d),(s),|(n)).#de| |00000630| 66 69 6e 65 20 62 63 6d | 70 28 73 31 2c 73 32 2c |fine bcm|p(s1,s2,| |00000640| 6e 29 09 6d 65 6d 63 6d | 70 28 28 73 31 29 2c 28 |n).memcm|p((s1),(| |00000650| 73 32 29 2c 28 6e 29 29 | 0d 23 64 65 66 69 6e 65 |s2),(n))|.#define| |00000660| 20 62 7a 65 72 6f 28 73 | 2c 6e 29 09 6d 65 6d 73 | bzero(s|,n).mems| |00000670| 65 74 28 28 73 29 2c 30 | 2c 28 6e 29 29 0d 23 65 |et((s),0|,(n)).#e| |00000680| 6e 64 69 66 0d 0d 0d 2f | 2a 0d 20 2a 20 44 65 66 |ndif.../|*. * Def| |00000690| 69 6e 65 20 74 68 65 20 | 73 79 6e 74 61 78 20 73 |ine the |syntax s| |000006a0| 74 75 66 66 2c 20 73 6f | 20 77 65 20 63 61 6e 20 |tuff, so| we can | |000006b0| 64 6f 20 74 68 65 20 5c | 3c 2e 2e 2e 5c 3e 20 74 |do the \|<...\> t| |000006c0| 68 69 6e 67 73 2e 0d 20 | 2a 2f 0d 0d 23 69 66 6e |hings.. |*/..#ifn| |000006d0| 64 65 66 20 53 77 6f 72 | 64 20 2f 2a 20 6d 75 73 |def Swor|d /* mus| |000006e0| 74 20 62 65 20 6e 6f 6e | 2d 7a 65 72 6f 20 69 6e |t be non|-zero in| |000006f0| 20 73 6f 6d 65 20 6f 66 | 20 74 68 65 20 74 65 73 | some of| the tes| |00000700| 74 73 20 62 65 6c 6f 77 | 2e 2e 2e 20 2a 2f 0d 23 |ts below|... */.#| |00000710| 64 65 66 69 6e 65 20 53 | 77 6f 72 64 20 31 0d 23 |define S|word 1.#| |00000720| 65 6e 64 69 66 0d 0d 69 | 6e 74 20 72 65 5f 6d 61 |endif..i|nt re_ma| |00000730| 74 63 68 5f 32 28 2e 2e | 2e 29 3b 0d 69 6e 74 20 |tch_2(..|.);.int | |00000740| 72 65 5f 73 65 61 72 63 | 68 5f 32 28 2e 2e 2e 29 |re_searc|h_2(...)| |00000750| 3b 0d 0d 23 64 65 66 69 | 6e 65 20 53 59 4e 54 41 |;..#defi|ne SYNTA| |00000760| 58 28 63 29 20 72 65 5f | 73 79 6e 74 61 78 5f 74 |X(c) re_|syntax_t| |00000770| 61 62 6c 65 5b 63 5d 0d | 0d 23 69 66 64 65 66 20 |able[c].|.#ifdef | |00000780| 53 59 4e 54 41 58 5f 54 | 41 42 4c 45 0d 0d 63 68 |SYNTAX_T|ABLE..ch| |00000790| 61 72 20 2a 72 65 5f 73 | 79 6e 74 61 78 5f 74 61 |ar *re_s|yntax_ta| |000007a0| 62 6c 65 3b 0d 0d 23 65 | 6c 73 65 0d 0d 73 74 61 |ble;..#e|lse..sta| |000007b0| 74 69 63 20 63 68 61 72 | 20 72 65 5f 73 79 6e 74 |tic char| re_synt| |000007c0| 61 78 5f 74 61 62 6c 65 | 5b 32 35 36 5d 3b 0d 0d |ax_table|[256];..| |000007d0| 73 74 61 74 69 63 20 76 | 6f 69 64 0d 69 6e 69 74 |static v|oid.init| |000007e0| 5f 73 79 6e 74 61 78 5f | 6f 6e 63 65 20 28 29 0d |_syntax_|once ().| |000007f0| 7b 0d 20 20 20 72 65 67 | 69 73 74 65 72 20 69 6e |{. reg|ister in| |00000800| 74 20 63 3b 0d 20 20 20 | 73 74 61 74 69 63 20 69 |t c;. |static i| |00000810| 6e 74 20 64 6f 6e 65 20 | 3d 20 30 3b 0d 0d 20 20 |nt done |= 0;.. | |00000820| 20 69 66 20 28 64 6f 6e | 65 29 0d 20 20 20 20 20 | if (don|e). | |00000830| 72 65 74 75 72 6e 3b 0d | 0d 20 20 20 62 7a 65 72 |return;.|. bzer| |00000840| 6f 20 28 72 65 5f 73 79 | 6e 74 61 78 5f 74 61 62 |o (re_sy|ntax_tab| |00000850| 6c 65 2c 20 73 69 7a 65 | 6f 66 20 72 65 5f 73 79 |le, size|of re_sy| |00000860| 6e 74 61 78 5f 74 61 62 | 6c 65 29 3b 0d 0d 20 20 |ntax_tab|le);.. | |00000870| 20 66 6f 72 20 28 63 20 | 3d 20 27 61 27 3b 20 63 | for (c |= 'a'; c| |00000880| 20 3c 3d 20 27 7a 27 3b | 20 63 2b 2b 29 0d 20 20 | <= 'z';| c++). | |00000890| 20 20 20 72 65 5f 73 79 | 6e 74 61 78 5f 74 61 62 | re_sy|ntax_tab| |000008a0| 6c 65 5b 63 5d 20 3d 20 | 53 77 6f 72 64 3b 0d 0d |le[c] = |Sword;..| |000008b0| 20 20 20 66 6f 72 20 28 | 63 20 3d 20 27 41 27 3b | for (|c = 'A';| |000008c0| 20 63 20 3c 3d 20 27 5a | 27 3b 20 63 2b 2b 29 0d | c <= 'Z|'; c++).| |000008d0| 20 20 20 20 20 72 65 5f | 73 79 6e 74 61 78 5f 74 | re_|syntax_t| |000008e0| 61 62 6c 65 5b 63 5d 20 | 3d 20 53 77 6f 72 64 3b |able[c] |= Sword;| |000008f0| 0d 0d 20 20 20 66 6f 72 | 20 28 63 20 3d 20 27 30 |.. for| (c = '0| |00000900| 27 3b 20 63 20 3c 3d 20 | 27 39 27 3b 20 63 2b 2b |'; c <= |'9'; c++| |00000910| 29 0d 20 20 20 20 20 72 | 65 5f 73 79 6e 74 61 78 |). r|e_syntax| |00000920| 5f 74 61 62 6c 65 5b 63 | 5d 20 3d 20 53 77 6f 72 |_table[c|] = Swor| |00000930| 64 3b 0d 0d 20 20 20 64 | 6f 6e 65 20 3d 20 31 3b |d;.. d|one = 1;| |00000940| 0d 7d 0d 0d 23 65 6e 64 | 69 66 20 2f 2a 20 53 59 |.}..#end|if /* SY| |00000950| 4e 54 41 58 5f 54 41 42 | 4c 45 20 2a 2f 0d 0d 23 |NTAX_TAB|LE */..#| |00000960| 69 6e 63 6c 75 64 65 20 | 22 72 65 67 65 78 2e 68 |include |"regex.h| |00000970| 22 0d 0d 2f 2a 20 4e 75 | 6d 62 65 72 20 6f 66 20 |"../* Nu|mber of | |00000980| 66 61 69 6c 75 72 65 20 | 70 6f 69 6e 74 73 20 74 |failure |points t| |00000990| 6f 20 61 6c 6c 6f 63 61 | 74 65 20 73 70 61 63 65 |o alloca|te space| |000009a0| 20 66 6f 72 20 69 6e 69 | 74 69 61 6c 6c 79 2c 0d | for ini|tially,.| |000009b0| 20 77 68 65 6e 20 6d 61 | 74 63 68 69 6e 67 2e 20 | when ma|tching. | |000009c0| 20 49 66 20 74 68 69 73 | 20 6e 75 6d 62 65 72 20 | If this| number | |000009d0| 69 73 20 65 78 63 65 65 | 64 65 64 2c 20 6d 6f 72 |is excee|ded, mor| |000009e0| 65 20 73 70 61 63 65 20 | 69 73 20 61 6c 6c 6f 63 |e space |is alloc| |000009f0| 61 74 65 64 2c 0d 20 73 | 6f 20 69 74 20 69 73 20 |ated,. s|o it is | |00000a00| 6e 6f 74 20 61 20 68 61 | 72 64 20 6c 69 6d 69 74 |not a ha|rd limit| |00000a10| 2e 20 20 2a 2f 0d 0d 23 | 69 66 6e 64 65 66 20 4e |. */..#|ifndef N| |00000a20| 46 41 49 4c 55 52 45 53 | 0d 23 64 65 66 69 6e 65 |FAILURES|.#define| |00000a30| 20 4e 46 41 49 4c 55 52 | 45 53 20 38 30 0d 23 65 | NFAILUR|ES 80.#e| |00000a40| 6e 64 69 66 20 2f 2a 20 | 4e 46 41 49 4c 55 52 45 |ndif /* |NFAILURE| |00000a50| 53 20 2a 2f 0d 0d 2f 2a | 20 77 69 64 74 68 20 6f |S */../*| width o| |00000a60| 66 20 61 20 62 79 74 65 | 20 69 6e 20 62 69 74 73 |f a byte| in bits| |00000a70| 20 2a 2f 0d 0d 23 64 65 | 66 69 6e 65 20 42 59 54 | */..#de|fine BYT| |00000a80| 45 57 49 44 54 48 20 38 | 0d 0d 23 69 66 6e 64 65 |EWIDTH 8|..#ifnde| |00000a90| 66 20 53 49 47 4e 5f 45 | 58 54 45 4e 44 5f 43 48 |f SIGN_E|XTEND_CH| |00000aa0| 41 52 0d 23 64 65 66 69 | 6e 65 20 53 49 47 4e 5f |AR.#defi|ne SIGN_| |00000ab0| 45 58 54 45 4e 44 5f 43 | 48 41 52 28 78 29 20 28 |EXTEND_C|HAR(x) (| |00000ac0| 78 29 0d 23 65 6e 64 69 | 66 0d 0c 0d 73 74 61 74 |x).#endi|f...stat| |00000ad0| 69 63 20 69 6e 74 20 6f | 62 73 63 75 72 65 5f 73 |ic int o|bscure_s| |00000ae0| 79 6e 74 61 78 20 3d 20 | 30 3b 0d 0d 2f 2a 20 53 |yntax = |0;../* S| |00000af0| 70 65 63 69 66 79 20 74 | 68 65 20 70 72 65 63 69 |pecify t|he preci| |00000b00| 73 65 20 73 79 6e 74 61 | 78 20 6f 66 20 72 65 67 |se synta|x of reg| |00000b10| 65 78 70 20 66 6f 72 20 | 63 6f 6d 70 69 6c 61 74 |exp for |compilat| |00000b20| 69 6f 6e 2e 0d 20 20 20 | 54 68 69 73 20 70 72 6f |ion.. |This pro| |00000b30| 76 69 64 65 73 20 66 6f | 72 20 63 6f 6d 70 61 74 |vides fo|r compat| |00000b40| 69 62 69 6c 69 74 79 20 | 66 6f 72 20 76 61 72 69 |ibility |for vari| |00000b50| 6f 75 73 20 75 74 69 6c | 69 74 69 65 73 0d 20 20 |ous util|ities. | |00000b60| 20 77 68 69 63 68 20 68 | 69 73 74 6f 72 69 63 61 | which h|istorica| |00000b70| 6c 6c 79 20 68 61 76 65 | 20 64 69 66 66 65 72 65 |lly have| differe| |00000b80| 6e 74 2c 20 69 6e 63 6f | 6d 70 61 74 69 62 6c 65 |nt, inco|mpatible| |00000b90| 20 73 79 6e 74 61 78 65 | 73 2e 0d 0d 20 20 20 54 | syntaxe|s... T| |00000ba0| 68 65 20 61 72 67 75 6d | 65 6e 74 20 53 59 4e 54 |he argum|ent SYNT| |00000bb0| 41 58 20 69 73 20 61 20 | 62 69 74 2d 6d 61 73 6b |AX is a |bit-mask| |00000bc0| 20 63 6f 6e 74 61 69 6e | 69 6e 67 20 74 68 65 20 | contain|ing the | |00000bd0| 74 77 6f 20 62 69 74 73 | 0d 20 20 20 52 45 5f 4e |two bits|. RE_N| |00000be0| 4f 5f 42 4b 5f 50 41 52 | 45 4e 53 20 61 6e 64 20 |O_BK_PAR|ENS and | |00000bf0| 52 45 5f 4e 4f 5f 42 4b | 5f 56 42 41 52 2e 20 20 |RE_NO_BK|_VBAR. | |00000c00| 2a 2f 0d 0d 69 6e 74 0d | 72 65 5f 73 65 74 5f 73 |*/..int.|re_set_s| |00000c10| 79 6e 74 61 78 20 28 73 | 79 6e 74 61 78 29 0d 20 |yntax (s|yntax). | |00000c20| 20 20 69 6e 74 20 73 79 | 6e 74 61 78 3b 0d 7b 0d | int sy|ntax;.{.| |00000c30| 20 20 69 6e 74 20 72 65 | 74 3b 0d 0d 20 20 72 65 | int re|t;.. re| |00000c40| 74 20 3d 20 6f 62 73 63 | 75 72 65 5f 73 79 6e 74 |t = obsc|ure_synt| |00000c50| 61 78 3b 0d 20 20 6f 62 | 73 63 75 72 65 5f 73 79 |ax;. ob|scure_sy| |00000c60| 6e 74 61 78 20 3d 20 73 | 79 6e 74 61 78 3b 0d 20 |ntax = s|yntax;. | |00000c70| 20 72 65 74 75 72 6e 20 | 72 65 74 3b 0d 7d 0d 0c | return |ret;.}..| |00000c80| 0d 2f 2a 20 72 65 5f 63 | 6f 6d 70 69 6c 65 5f 70 |./* re_c|ompile_p| |00000c90| 61 74 74 65 72 6e 20 74 | 61 6b 65 73 20 61 20 72 |attern t|akes a r| |00000ca0| 65 67 75 6c 61 72 2d 65 | 78 70 72 65 73 73 69 6f |egular-e|xpressio| |00000cb0| 6e 20 73 74 72 69 6e 67 | 0d 20 20 20 61 6e 64 20 |n string|. and | |00000cc0| 63 6f 6e 76 65 72 74 73 | 20 69 74 20 69 6e 74 6f |converts| it into| |00000cd0| 20 61 20 62 75 66 66 65 | 72 20 66 75 6c 6c 20 6f | a buffe|r full o| |00000ce0| 66 20 62 79 74 65 20 63 | 6f 6d 6d 61 6e 64 73 20 |f byte c|ommands | |00000cf0| 66 6f 72 20 6d 61 74 63 | 68 69 6e 67 2e 0d 0d 20 |for matc|hing... | |00000d00| 20 50 41 54 54 45 52 4e | 20 20 20 69 73 20 74 68 | PATTERN| is th| |00000d10| 65 20 61 64 64 72 65 73 | 73 20 6f 66 20 74 68 65 |e addres|s of the| |00000d20| 20 70 61 74 74 65 72 6e | 20 73 74 72 69 6e 67 0d | pattern| string.| |00000d30| 20 20 53 49 5a 45 20 20 | 20 20 20 20 69 73 20 74 | SIZE | is t| |00000d40| 68 65 20 6c 65 6e 67 74 | 68 20 6f 66 20 69 74 2e |he lengt|h of it.| |00000d50| 0d 20 20 42 55 46 50 09 | 20 20 20 20 69 73 20 61 |. BUFP.| is a| |00000d60| 20 20 73 74 72 75 63 74 | 20 72 65 5f 70 61 74 74 | struct| re_patt| |00000d70| 65 72 6e 5f 62 75 66 66 | 65 72 20 2a 20 20 77 68 |ern_buff|er * wh| |00000d80| 69 63 68 20 70 6f 69 6e | 74 73 20 74 6f 20 74 68 |ich poin|ts to th| |00000d90| 65 20 69 6e 66 6f 0d 09 | 20 20 20 20 6f 6e 20 77 |e info..| on w| |00000da0| 68 65 72 65 20 74 6f 20 | 73 74 6f 72 65 20 74 68 |here to |store th| |00000db0| 65 20 62 79 74 65 20 63 | 6f 6d 6d 61 6e 64 73 2e |e byte c|ommands.| |00000dc0| 0d 09 20 20 20 20 54 68 | 69 73 20 73 74 72 75 63 |.. Th|is struc| |00000dd0| 74 75 72 65 20 63 6f 6e | 74 61 69 6e 73 20 61 20 |ture con|tains a | |00000de0| 20 63 68 61 72 20 2a 20 | 20 77 68 69 63 68 20 70 | char * | which p| |00000df0| 6f 69 6e 74 73 20 74 6f | 20 74 68 65 0d 09 20 20 |oints to| the.. | |00000e00| 20 20 61 63 74 75 61 6c | 20 73 70 61 63 65 2c 20 | actual| space, | |00000e10| 77 68 69 63 68 20 73 68 | 6f 75 6c 64 20 68 61 76 |which sh|ould hav| |00000e20| 65 20 62 65 65 6e 20 6f | 62 74 61 69 6e 65 64 20 |e been o|btained | |00000e30| 77 69 74 68 20 6d 61 6c | 6c 6f 63 2e 0d 09 20 20 |with mal|loc... | |00000e40| 20 20 72 65 5f 63 6f 6d | 70 69 6c 65 5f 70 61 74 | re_com|pile_pat| |00000e50| 74 65 72 6e 20 6d 61 79 | 20 75 73 65 20 20 72 65 |tern may| use re| |00000e60| 61 6c 6c 6f 63 20 20 74 | 6f 20 67 72 6f 77 20 74 |alloc t|o grow t| |00000e70| 68 65 20 62 75 66 66 65 | 72 20 73 70 61 63 65 2e |he buffe|r space.| |00000e80| 0d 0d 20 20 54 68 65 20 | 6e 75 6d 62 65 72 20 6f |.. The |number o| |00000e90| 66 20 62 79 74 65 73 20 | 6f 66 20 63 6f 6d 6d 61 |f bytes |of comma| |00000ea0| 6e 64 73 20 63 61 6e 20 | 62 65 20 66 6f 75 6e 64 |nds can |be found| |00000eb0| 20 6f 75 74 20 62 79 20 | 6c 6f 6f 6b 69 6e 67 20 | out by |looking | |00000ec0| 69 6e 0d 20 20 74 68 65 | 20 20 73 74 72 75 63 74 |in. the| struct| |00000ed0| 20 72 65 5f 70 61 74 74 | 65 72 6e 5f 62 75 66 66 | re_patt|ern_buff| |00000ee0| 65 72 20 20 74 68 61 74 | 20 62 75 66 70 20 70 6f |er that| bufp po| |00000ef0| 69 6e 74 65 64 20 74 6f | 2c 0d 20 20 61 66 74 65 |inted to|,. afte| |00000f00| 72 20 72 65 5f 63 6f 6d | 70 69 6c 65 5f 70 61 74 |r re_com|pile_pat| |00000f10| 74 65 72 6e 20 72 65 74 | 75 72 6e 73 2e 0d 2a 2f |tern ret|urns..*/| |00000f20| 0d 0d 23 64 65 66 69 6e | 65 20 50 41 54 50 55 53 |..#defin|e PATPUS| |00000f30| 48 28 63 68 29 20 28 2a | 62 2b 2b 20 3d 20 28 63 |H(ch) (*|b++ = (c| |00000f40| 68 61 72 29 20 28 63 68 | 29 29 0d 0d 23 64 65 66 |har) (ch|))..#def| |00000f50| 69 6e 65 20 50 41 54 46 | 45 54 43 48 28 63 29 20 |ine PATF|ETCH(c) | |00000f60| 5c 0d 20 7b 69 66 20 28 | 70 20 3d 3d 20 70 65 6e |\. {if (|p == pen| |00000f70| 64 29 20 67 6f 74 6f 20 | 65 6e 64 5f 6f 66 5f 70 |d) goto |end_of_p| |00000f80| 61 74 74 65 72 6e 3b 20 | 5c 0d 20 20 63 20 3d 20 |attern; |\. c = | |00000f90| 2a 20 28 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 |* (unsig|ned char| |00000fa0| 20 2a 29 20 70 2b 2b 3b | 20 5c 0d 20 20 69 66 20 | *) p++;| \. if | |00000fb0| 28 74 72 61 6e 73 6c 61 | 74 65 29 20 63 20 3d 20 |(transla|te) c = | |00000fc0| 74 72 61 6e 73 6c 61 74 | 65 5b 63 5d 3b 20 7d 0d |translat|e[c]; }.| |00000fd0| 0d 23 64 65 66 69 6e 65 | 20 50 41 54 46 45 54 43 |.#define| PATFETC| |00000fe0| 48 5f 52 41 57 28 63 29 | 20 5c 0d 20 7b 69 66 20 |H_RAW(c)| \. {if | |00000ff0| 28 70 20 3d 3d 20 70 65 | 6e 64 29 20 67 6f 74 6f |(p == pe|nd) goto| |00001000| 20 65 6e 64 5f 6f 66 5f | 70 61 74 74 65 72 6e 3b | end_of_|pattern;| |00001010| 20 5c 0d 20 20 63 20 3d | 20 2a 20 28 75 6e 73 69 | \. c =| * (unsi| |00001020| 67 6e 65 64 20 63 68 61 | 72 20 2a 29 20 70 2b 2b |gned cha|r *) p++| |00001030| 3b 20 7d 0d 0d 23 64 65 | 66 69 6e 65 20 50 41 54 |; }..#de|fine PAT| |00001040| 55 4e 46 45 54 43 48 20 | 70 2d 2d 0d 0d 23 64 65 |UNFETCH |p--..#de| |00001050| 66 69 6e 65 20 45 58 54 | 45 4e 44 5f 42 55 46 46 |fine EXT|END_BUFF| |00001060| 45 52 20 5c 0d 20 20 7b | 20 63 68 61 72 20 2a 6f |ER \. {| char *o| |00001070| 6c 64 5f 62 75 66 66 65 | 72 20 3d 20 62 75 66 70 |ld_buffe|r = bufp| |00001080| 2d 3e 62 75 66 66 65 72 | 3b 20 5c 0d 20 20 20 20 |->buffer|; \. | |00001090| 69 66 20 28 62 75 66 70 | 2d 3e 61 6c 6c 6f 63 61 |if (bufp|->alloca| |000010a0| 74 65 64 20 3d 3d 20 28 | 31 3c 3c 31 36 29 29 20 |ted == (|1<<16)) | |000010b0| 67 6f 74 6f 20 74 6f 6f | 5f 62 69 67 3b 20 5c 0d |goto too|_big; \.| |000010c0| 20 20 20 20 62 75 66 70 | 2d 3e 61 6c 6c 6f 63 61 | bufp|->alloca| |000010d0| 74 65 64 20 2a 3d 20 32 | 3b 20 5c 0d 20 20 20 20 |ted *= 2|; \. | |000010e0| 69 66 20 28 62 75 66 70 | 2d 3e 61 6c 6c 6f 63 61 |if (bufp|->alloca| |000010f0| 74 65 64 20 3e 20 28 31 | 3c 3c 31 36 29 29 20 62 |ted > (1|<<16)) b| |00001100| 75 66 70 2d 3e 61 6c 6c | 6f 63 61 74 65 64 20 3d |ufp->all|ocated =| |00001110| 20 28 31 3c 3c 31 36 29 | 3b 20 5c 0d 20 20 20 20 | (1<<16)|; \. | |00001120| 69 66 20 28 21 28 62 75 | 66 70 2d 3e 62 75 66 66 |if (!(bu|fp->buff| |00001130| 65 72 20 3d 20 28 63 68 | 61 72 20 2a 29 20 72 65 |er = (ch|ar *) re| |00001140| 61 6c 6c 6f 63 20 28 62 | 75 66 70 2d 3e 62 75 66 |alloc (b|ufp->buf| |00001150| 66 65 72 2c 20 62 75 66 | 70 2d 3e 61 6c 6c 6f 63 |fer, buf|p->alloc| |00001160| 61 74 65 64 29 29 29 20 | 5c 0d 20 20 20 20 20 20 |ated))) |\. | |00001170| 67 6f 74 6f 20 6d 65 6d | 6f 72 79 5f 65 78 68 61 |goto mem|ory_exha| |00001180| 75 73 74 65 64 3b 20 5c | 0d 20 20 20 20 63 20 3d |usted; \|. c =| |00001190| 20 62 75 66 70 2d 3e 62 | 75 66 66 65 72 20 2d 20 | bufp->b|uffer - | |000011a0| 6f 6c 64 5f 62 75 66 66 | 65 72 3b 20 5c 0d 20 20 |old_buff|er; \. | |000011b0| 20 20 62 20 2b 3d 20 63 | 3b 20 5c 0d 20 20 20 20 | b += c|; \. | |000011c0| 69 66 20 28 66 69 78 75 | 70 5f 6a 75 6d 70 29 20 |if (fixu|p_jump) | |000011d0| 5c 0d 20 20 20 20 20 20 | 66 69 78 75 70 5f 6a 75 |\. |fixup_ju| |000011e0| 6d 70 20 2b 3d 20 63 3b | 20 5c 0d 20 20 20 20 69 |mp += c;| \. i| |000011f0| 66 20 28 6c 61 73 74 73 | 74 61 72 74 29 20 5c 0d |f (lasts|tart) \.| |00001200| 20 20 20 20 20 20 6c 61 | 73 74 73 74 61 72 74 20 | la|ststart | |00001210| 2b 3d 20 63 3b 20 5c 0d | 20 20 20 20 62 65 67 61 |+= c; \.| bega| |00001220| 6c 74 20 2b 3d 20 63 3b | 20 5c 0d 20 20 20 20 69 |lt += c;| \. i| |00001230| 66 20 28 70 65 6e 64 69 | 6e 67 5f 65 78 61 63 74 |f (pendi|ng_exact| |00001240| 29 20 5c 0d 20 20 20 20 | 20 20 70 65 6e 64 69 6e |) \. | pendin| |00001250| 67 5f 65 78 61 63 74 20 | 2b 3d 20 63 3b 20 5c 0d |g_exact |+= c; \.| |00001260| 20 20 7d 0d 0d 73 74 61 | 74 69 63 20 69 6e 74 20 | }..sta|tic int | |00001270| 73 74 6f 72 65 5f 6a 75 | 6d 70 20 28 29 2c 20 69 |store_ju|mp (), i| |00001280| 6e 73 65 72 74 5f 6a 75 | 6d 70 20 28 29 3b 0d 0d |nsert_ju|mp ();..| |00001290| 63 68 61 72 20 2a 0d 72 | 65 5f 63 6f 6d 70 69 6c |char *.r|e_compil| |000012a0| 65 5f 70 61 74 74 65 72 | 6e 20 28 70 61 74 74 65 |e_patter|n (patte| |000012b0| 72 6e 2c 20 73 69 7a 65 | 2c 20 62 75 66 70 29 0d |rn, size|, bufp).| |000012c0| 20 20 20 20 20 63 68 61 | 72 20 2a 70 61 74 74 65 | cha|r *patte| |000012d0| 72 6e 3b 0d 20 20 20 20 | 20 69 6e 74 20 73 69 7a |rn;. | int siz| |000012e0| 65 3b 0d 20 20 20 20 20 | 73 74 72 75 63 74 20 72 |e;. |struct r| |000012f0| 65 5f 70 61 74 74 65 72 | 6e 5f 62 75 66 66 65 72 |e_patter|n_buffer| |00001300| 20 2a 62 75 66 70 3b 0d | 7b 0d 20 20 72 65 67 69 | *bufp;.|{. regi| |00001310| 73 74 65 72 20 63 68 61 | 72 20 2a 62 20 3d 20 62 |ster cha|r *b = b| |00001320| 75 66 70 2d 3e 62 75 66 | 66 65 72 3b 0d 20 20 72 |ufp->buf|fer;. r| |00001330| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 2a 70 20 |egister |char *p | |00001340| 3d 20 70 61 74 74 65 72 | 6e 3b 0d 20 20 63 68 61 |= patter|n;. cha| |00001350| 72 20 2a 70 65 6e 64 20 | 3d 20 70 61 74 74 65 72 |r *pend |= patter| |00001360| 6e 20 2b 20 73 69 7a 65 | 3b 0d 20 20 72 65 67 69 |n + size|;. regi| |00001370| 73 74 65 72 20 75 6e 73 | 69 67 6e 65 64 20 63 2c |ster uns|igned c,| |00001380| 20 63 31 3b 0d 20 20 63 | 68 61 72 20 2a 70 31 3b | c1;. c|har *p1;| |00001390| 0d 20 20 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 |. unsig|ned char| |000013a0| 20 2a 74 72 61 6e 73 6c | 61 74 65 20 3d 20 28 75 | *transl|ate = (u| |000013b0| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 2a 29 20 |nsigned |char *) | |000013c0| 62 75 66 70 2d 3e 74 72 | 61 6e 73 6c 61 74 65 3b |bufp->tr|anslate;| |000013d0| 0d 0d 20 20 2f 2a 20 61 | 64 64 72 65 73 73 20 6f |.. /* a|ddress o| |000013e0| 66 20 74 68 65 20 63 6f | 75 6e 74 2d 62 79 74 65 |f the co|unt-byte| |000013f0| 20 6f 66 20 74 68 65 20 | 6d 6f 73 74 20 72 65 63 | of the |most rec| |00001400| 65 6e 74 6c 79 20 69 6e | 73 65 72 74 65 64 20 22 |ently in|serted "| |00001410| 65 78 61 63 74 6e 22 20 | 63 6f 6d 6d 61 6e 64 2e |exactn" |command.| |00001420| 0d 20 20 20 20 54 68 69 | 73 20 6d 61 6b 65 73 20 |. Thi|s makes | |00001430| 69 74 20 70 6f 73 73 69 | 62 6c 65 20 74 6f 20 74 |it possi|ble to t| |00001440| 65 6c 6c 20 77 68 65 74 | 68 65 72 20 61 20 6e 65 |ell whet|her a ne| |00001450| 77 20 65 78 61 63 74 2d | 6d 61 74 63 68 20 63 68 |w exact-|match ch| |00001460| 61 72 61 63 74 65 72 0d | 20 20 20 20 63 61 6e 20 |aracter.| can | |00001470| 62 65 20 61 64 64 65 64 | 20 74 6f 20 74 68 61 74 |be added| to that| |00001480| 20 63 6f 6d 6d 61 6e 64 | 20 6f 72 20 72 65 71 75 | command| or requ| |00001490| 69 72 65 73 20 61 20 6e | 65 77 20 22 65 78 61 63 |ires a n|ew "exac| |000014a0| 74 6e 22 20 63 6f 6d 6d | 61 6e 64 2e 20 2a 2f 0d |tn" comm|and. */.| |000014b0| 20 20 20 20 20 0d 20 20 | 63 68 61 72 20 2a 70 65 | . |char *pe| |000014c0| 6e 64 69 6e 67 5f 65 78 | 61 63 74 20 3d 20 30 3b |nding_ex|act = 0;| |000014d0| 0d 0d 20 20 2f 2a 20 61 | 64 64 72 65 73 73 20 6f |.. /* a|ddress o| |000014e0| 66 20 74 68 65 20 70 6c | 61 63 65 20 77 68 65 72 |f the pl|ace wher| |000014f0| 65 20 61 20 66 6f 72 77 | 61 72 64 2d 6a 75 6d 70 |e a forw|ard-jump| |00001500| 20 73 68 6f 75 6c 64 20 | 67 6f 0d 20 20 20 20 74 | should |go. t| |00001510| 6f 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |o the en|d of the| |00001520| 20 63 6f 6e 74 61 69 6e | 69 6e 67 20 65 78 70 72 | contain|ing expr| |00001530| 65 73 73 69 6f 6e 2e 0d | 20 20 20 20 45 61 63 68 |ession..| Each| |00001540| 20 61 6c 74 65 72 6e 61 | 74 69 76 65 20 6f 66 20 | alterna|tive of | |00001550| 61 6e 20 22 6f 72 22 2c | 20 65 78 63 65 70 74 20 |an "or",| except | |00001560| 74 68 65 20 6c 61 73 74 | 2c 20 65 6e 64 73 20 77 |the last|, ends w| |00001570| 69 74 68 20 61 20 66 6f | 72 77 61 72 64 2d 6a 75 |ith a fo|rward-ju| |00001580| 6d 70 0d 20 20 20 20 6f | 66 20 74 68 69 73 20 73 |mp. o|f this s| |00001590| 6f 72 74 2e 20 2a 2f 0d | 0d 20 20 63 68 61 72 20 |ort. */.|. char | |000015a0| 2a 66 69 78 75 70 5f 6a | 75 6d 70 20 3d 20 30 3b |*fixup_j|ump = 0;| |000015b0| 0d 0d 20 20 2f 2a 20 61 | 64 64 72 65 73 73 20 6f |.. /* a|ddress o| |000015c0| 66 20 73 74 61 72 74 20 | 6f 66 20 74 68 65 20 6d |f start |of the m| |000015d0| 6f 73 74 20 72 65 63 65 | 6e 74 6c 79 20 66 69 6e |ost rece|ntly fin| |000015e0| 69 73 68 65 64 20 65 78 | 70 72 65 73 73 69 6f 6e |ished ex|pression| |000015f0| 2e 0d 20 20 20 20 54 68 | 69 73 20 74 65 6c 6c 73 |.. Th|is tells| |00001600| 20 70 6f 73 74 66 69 78 | 20 2a 20 77 68 65 72 65 | postfix| * where| |00001610| 20 74 6f 20 66 69 6e 64 | 20 74 68 65 20 73 74 61 | to find| the sta| |00001620| 72 74 20 6f 66 20 69 74 | 73 20 6f 70 65 72 61 6e |rt of it|s operan| |00001630| 64 2e 20 2a 2f 0d 0d 20 | 20 63 68 61 72 20 2a 6c |d. */.. | char *l| |00001640| 61 73 74 73 74 61 72 74 | 20 3d 20 30 3b 0d 0d 20 |aststart| = 0;.. | |00001650| 20 2f 2a 20 49 6e 20 70 | 72 6f 63 65 73 73 69 6e | /* In p|rocessin| |00001660| 67 20 61 20 72 65 70 65 | 61 74 2c 20 31 20 6d 65 |g a repe|at, 1 me| |00001670| 61 6e 73 20 7a 65 72 6f | 20 6d 61 74 63 68 65 73 |ans zero| matches| |00001680| 20 69 73 20 61 6c 6c 6f | 77 65 64 20 2a 2f 0d 0d | is allo|wed */..| |00001690| 20 20 63 68 61 72 20 7a | 65 72 6f 5f 74 69 6d 65 | char z|ero_time| |000016a0| 73 5f 6f 6b 3b 0d 0d 20 | 20 2f 2a 20 49 6e 20 70 |s_ok;.. | /* In p| |000016b0| 72 6f 63 65 73 73 69 6e | 67 20 61 20 72 65 70 65 |rocessin|g a repe| |000016c0| 61 74 2c 20 31 20 6d 65 | 61 6e 73 20 6d 61 6e 79 |at, 1 me|ans many| |000016d0| 20 6d 61 74 63 68 65 73 | 20 69 73 20 61 6c 6c 6f | matches| is allo| |000016e0| 77 65 64 20 2a 2f 0d 0d | 20 20 63 68 61 72 20 6d |wed */..| char m| |000016f0| 61 6e 79 5f 74 69 6d 65 | 73 5f 6f 6b 3b 0d 0d 20 |any_time|s_ok;.. | |00001700| 20 2f 2a 20 61 64 64 72 | 65 73 73 20 6f 66 20 62 | /* addr|ess of b| |00001710| 65 67 69 6e 6e 69 6e 67 | 20 6f 66 20 72 65 67 65 |eginning| of rege| |00001720| 78 70 2c 20 6f 72 20 69 | 6e 73 69 64 65 20 6f 66 |xp, or i|nside of| |00001730| 20 6c 61 73 74 20 5c 28 | 20 2a 2f 0d 0d 20 20 63 | last \(| */.. c| |00001740| 68 61 72 20 2a 62 65 67 | 61 6c 74 20 3d 20 62 3b |har *beg|alt = b;| |00001750| 0d 0d 20 20 2f 2a 20 53 | 74 61 63 6b 20 6f 66 20 |.. /* S|tack of | |00001760| 69 6e 66 6f 72 6d 61 74 | 69 6f 6e 20 73 61 76 65 |informat|ion save| |00001770| 64 20 62 79 20 5c 28 20 | 61 6e 64 20 72 65 73 74 |d by \( |and rest| |00001780| 6f 72 65 64 20 62 79 20 | 5c 29 2e 0d 20 20 20 20 |ored by |\).. | |00001790| 20 46 6f 75 72 20 73 74 | 61 63 6b 20 65 6c 65 6d | Four st|ack elem| |000017a0| 65 6e 74 73 20 61 72 65 | 20 70 75 73 68 65 64 20 |ents are| pushed | |000017b0| 62 79 20 65 61 63 68 20 | 5c 28 3a 0d 20 20 20 20 |by each |\(:. | |000017c0| 20 20 20 46 69 72 73 74 | 2c 20 74 68 65 20 76 61 | First|, the va| |000017d0| 6c 75 65 20 6f 66 20 62 | 2e 0d 20 20 20 20 20 20 |lue of b|.. | |000017e0| 20 53 65 63 6f 6e 64 2c | 20 74 68 65 20 76 61 6c | Second,| the val| |000017f0| 75 65 20 6f 66 20 66 69 | 78 75 70 5f 6a 75 6d 70 |ue of fi|xup_jump| |00001800| 2e 0d 20 20 20 20 20 20 | 20 54 68 69 72 64 2c 20 |.. | Third, | |00001810| 74 68 65 20 76 61 6c 75 | 65 20 6f 66 20 72 65 67 |the valu|e of reg| |00001820| 6e 75 6d 2e 0d 20 20 20 | 20 20 20 20 46 6f 75 72 |num.. | Four| |00001830| 74 68 2c 20 74 68 65 20 | 76 61 6c 75 65 20 6f 66 |th, the |value of| |00001840| 20 62 65 67 61 6c 74 2e | 20 20 2a 2f 0d 0d 20 20 | begalt.| */.. | |00001850| 69 6e 74 20 73 74 61 63 | 6b 62 5b 34 30 5d 3b 0d |int stac|kb[40];.| |00001860| 20 20 69 6e 74 20 2a 73 | 74 61 63 6b 70 20 3d 20 | int *s|tackp = | |00001870| 73 74 61 63 6b 62 3b 0d | 20 20 69 6e 74 20 2a 73 |stackb;.| int *s| |00001880| 74 61 63 6b 65 20 3d 20 | 73 74 61 63 6b 62 20 2b |tacke = |stackb +| |00001890| 20 34 30 3b 0d 20 20 69 | 6e 74 20 2a 73 74 61 63 | 40;. i|nt *stac| |000018a0| 6b 74 3b 0d 0d 20 20 2f | 2a 20 43 6f 75 6e 74 73 |kt;.. /|* Counts| |000018b0| 20 5c 28 27 73 20 61 73 | 20 74 68 65 79 20 61 72 | \('s as| they ar| |000018c0| 65 20 65 6e 63 6f 75 6e | 74 65 72 65 64 2e 20 20 |e encoun|tered. | |000018d0| 52 65 6d 65 6d 62 65 72 | 65 64 20 66 6f 72 20 74 |Remember|ed for t| |000018e0| 68 65 20 6d 61 74 63 68 | 69 6e 67 20 5c 29 2c 0d |he match|ing \),.| |000018f0| 20 20 20 20 20 77 68 65 | 72 65 20 69 74 20 62 65 | whe|re it be| |00001900| 63 6f 6d 65 73 20 74 68 | 65 20 22 72 65 67 69 73 |comes th|e "regis| |00001910| 74 65 72 20 6e 75 6d 62 | 65 72 22 20 74 6f 20 70 |ter numb|er" to p| |00001920| 75 74 20 69 6e 20 74 68 | 65 20 73 74 6f 70 5f 6d |ut in th|e stop_m| |00001930| 65 6d 6f 72 79 20 63 6f | 6d 6d 61 6e 64 20 2a 2f |emory co|mmand */| |00001940| 0d 0d 20 20 69 6e 74 20 | 72 65 67 6e 75 6d 20 3d |.. int |regnum =| |00001950| 20 31 3b 0d 0d 20 20 62 | 75 66 70 2d 3e 66 61 73 | 1;.. b|ufp->fas| |00001960| 74 6d 61 70 5f 61 63 63 | 75 72 61 74 65 20 3d 20 |tmap_acc|urate = | |00001970| 30 3b 0d 0d 23 69 66 6e | 64 65 66 20 65 6d 61 63 |0;..#ifn|def emac| |00001980| 73 0d 23 69 66 6e 64 65 | 66 20 53 59 4e 54 41 58 |s.#ifnde|f SYNTAX| |00001990| 5f 54 41 42 4c 45 0d 20 | 20 2f 2a 0d 20 20 20 2a |_TABLE. | /*. *| |000019a0| 20 49 6e 69 74 69 61 6c | 69 7a 65 20 74 68 65 20 | Initial|ize the | |000019b0| 73 79 6e 74 61 78 20 74 | 61 62 6c 65 2e 0d 20 20 |syntax t|able.. | |000019c0| 20 2a 2f 0d 20 20 20 69 | 6e 69 74 5f 73 79 6e 74 | */. i|nit_synt| |000019d0| 61 78 5f 6f 6e 63 65 28 | 29 3b 0d 23 65 6e 64 69 |ax_once(|);.#endi| |000019e0| 66 0d 23 65 6e 64 69 66 | 0d 0d 20 20 69 66 20 28 |f.#endif|.. if (| |000019f0| 62 75 66 70 2d 3e 61 6c | 6c 6f 63 61 74 65 64 20 |bufp->al|located | |00001a00| 3d 3d 20 30 29 0d 20 20 | 20 20 7b 0d 20 20 20 20 |== 0). | {. | |00001a10| 20 20 62 75 66 70 2d 3e | 61 6c 6c 6f 63 61 74 65 | bufp->|allocate| |00001a20| 64 20 3d 20 32 38 3b 0d | 20 20 20 20 20 20 69 66 |d = 28;.| if| |00001a30| 20 28 62 75 66 70 2d 3e | 62 75 66 66 65 72 29 0d | (bufp->|buffer).| |00001a40| 09 2f 2a 20 45 58 54 45 | 4e 44 5f 42 55 46 46 45 |./* EXTE|ND_BUFFE| |00001a50| 52 20 6c 6f 73 65 73 20 | 77 68 65 6e 20 62 75 66 |R loses |when buf| |00001a60| 70 2d 3e 61 6c 6c 6f 63 | 61 74 65 64 20 69 73 20 |p->alloc|ated is | |00001a70| 30 20 2a 2f 0d 09 62 75 | 66 70 2d 3e 62 75 66 66 |0 */..bu|fp->buff| |00001a80| 65 72 20 3d 20 28 63 68 | 61 72 20 2a 29 20 72 65 |er = (ch|ar *) re| |00001a90| 61 6c 6c 6f 63 20 28 62 | 75 66 70 2d 3e 62 75 66 |alloc (b|ufp->buf| |00001aa0| 66 65 72 2c 20 32 38 29 | 3b 0d 20 20 20 20 20 20 |fer, 28)|;. | |00001ab0| 65 6c 73 65 0d 09 2f 2a | 20 43 61 6c 6c 65 72 20 |else../*| Caller | |00001ac0| 64 69 64 20 6e 6f 74 20 | 61 6c 6c 6f 63 61 74 65 |did not |allocate| |00001ad0| 20 61 20 62 75 66 66 65 | 72 2e 20 20 44 6f 20 69 | a buffe|r. Do i| |00001ae0| 74 20 66 6f 72 20 68 69 | 6d 20 2a 2f 0d 09 62 75 |t for hi|m */..bu| |00001af0| 66 70 2d 3e 62 75 66 66 | 65 72 20 3d 20 28 63 68 |fp->buff|er = (ch| |00001b00| 61 72 20 2a 29 20 6d 61 | 6c 6c 6f 63 20 28 32 38 |ar *) ma|lloc (28| |00001b10| 29 3b 0d 20 20 20 20 20 | 20 69 66 20 28 21 62 75 |);. | if (!bu| |00001b20| 66 70 2d 3e 62 75 66 66 | 65 72 29 20 67 6f 74 6f |fp->buff|er) goto| |00001b30| 20 6d 65 6d 6f 72 79 5f | 65 78 68 61 75 73 74 65 | memory_|exhauste| |00001b40| 64 3b 0d 20 20 20 20 20 | 20 62 65 67 61 6c 74 20 |d;. | begalt | |00001b50| 3d 20 62 20 3d 20 62 75 | 66 70 2d 3e 62 75 66 66 |= b = bu|fp->buff| |00001b60| 65 72 3b 0d 20 20 20 20 | 7d 0d 0d 20 20 77 68 69 |er;. |}.. whi| |00001b70| 6c 65 20 28 70 20 21 3d | 20 70 65 6e 64 29 0d 20 |le (p !=| pend). | |00001b80| 20 20 20 7b 0d 20 20 20 | 20 20 20 69 66 20 28 62 | {. | if (b| |00001b90| 20 2d 20 62 75 66 70 2d | 3e 62 75 66 66 65 72 20 | - bufp-|>buffer | |00001ba0| 3e 20 62 75 66 70 2d 3e | 61 6c 6c 6f 63 61 74 65 |> bufp->|allocate| |00001bb0| 64 20 2d 20 31 30 29 0d | 09 2f 2a 20 4e 6f 74 65 |d - 10).|./* Note| |00001bc0| 20 74 68 61 74 20 45 58 | 54 45 4e 44 5f 42 55 46 | that EX|TEND_BUF| |00001bd0| 46 45 52 20 63 6c 6f 62 | 62 65 72 73 20 63 20 2a |FER clob|bers c *| |00001be0| 2f 0d 09 45 58 54 45 4e | 44 5f 42 55 46 46 45 52 |/..EXTEN|D_BUFFER| |00001bf0| 3b 0d 0d 20 20 20 20 20 | 20 50 41 54 46 45 54 43 |;.. | PATFETC| |00001c00| 48 20 28 63 29 3b 0d 0d | 20 20 20 20 20 20 73 77 |H (c);..| sw| |00001c10| 69 74 63 68 20 28 63 29 | 0d 09 7b 0d 09 63 61 73 |itch (c)|..{..cas| |00001c20| 65 20 27 24 27 3a 0d 09 | 20 20 69 66 20 28 6f 62 |e '$':..| if (ob| |00001c30| 73 63 75 72 65 5f 73 79 | 6e 74 61 78 20 26 20 52 |scure_sy|ntax & R| |00001c40| 45 5f 54 49 47 48 54 5f | 56 42 41 52 29 0d 09 20 |E_TIGHT_|VBAR).. | |00001c50| 20 20 20 7b 0d 09 20 20 | 20 20 20 20 69 66 20 28 | {.. | if (| |00001c60| 21 20 28 6f 62 73 63 75 | 72 65 5f 73 79 6e 74 61 |! (obscu|re_synta| |00001c70| 78 20 26 20 52 45 5f 43 | 4f 4e 54 45 58 54 5f 49 |x & RE_C|ONTEXT_I| |00001c80| 4e 44 45 50 5f 4f 50 53 | 29 20 26 26 20 70 20 21 |NDEP_OPS|) && p !| |00001c90| 3d 20 70 65 6e 64 29 0d | 09 09 67 6f 74 6f 20 6e |= pend).|..goto n| |00001ca0| 6f 72 6d 61 6c 5f 63 68 | 61 72 3b 0d 09 20 20 20 |ormal_ch|ar;.. | |00001cb0| 20 20 20 2f 2a 20 4d 61 | 6b 65 20 6f 70 65 72 61 | /* Ma|ke opera| |00001cc0| 6e 64 20 6f 66 20 6c 61 | 73 74 20 76 62 61 72 20 |nd of la|st vbar | |00001cd0| 65 6e 64 20 62 65 66 6f | 72 65 20 74 68 69 73 20 |end befo|re this | |00001ce0| 60 24 27 2e 20 20 2a 2f | 0d 09 20 20 20 20 20 20 |`$'. */|.. | |00001cf0| 69 66 20 28 66 69 78 75 | 70 5f 6a 75 6d 70 29 0d |if (fixu|p_jump).| |00001d00| 09 09 73 74 6f 72 65 5f | 6a 75 6d 70 20 28 66 69 |..store_|jump (fi| |00001d10| 78 75 70 5f 6a 75 6d 70 | 2c 20 6a 75 6d 70 2c 20 |xup_jump|, jump, | |00001d20| 62 29 3b 0d 09 20 20 20 | 20 20 20 66 69 78 75 70 |b);.. | fixup| |00001d30| 5f 6a 75 6d 70 20 3d 20 | 30 3b 0d 09 20 20 20 20 |_jump = |0;.. | |00001d40| 20 20 50 41 54 50 55 53 | 48 20 28 65 6e 64 6c 69 | PATPUS|H (endli| |00001d50| 6e 65 29 3b 0d 09 20 20 | 20 20 20 20 62 72 65 61 |ne);.. | brea| |00001d60| 6b 3b 0d 09 20 20 20 20 | 7d 0d 0d 09 20 20 2f 2a |k;.. |}... /*| |00001d70| 20 24 20 6d 65 61 6e 73 | 20 73 75 63 63 65 65 64 | $ means| succeed| |00001d80| 20 69 66 20 61 74 20 65 | 6e 64 20 6f 66 20 6c 69 | if at e|nd of li| |00001d90| 6e 65 2c 20 62 75 74 20 | 6f 6e 6c 79 20 69 6e 20 |ne, but |only in | |00001da0| 73 70 65 63 69 61 6c 20 | 63 6f 6e 74 65 78 74 73 |special |contexts| |00001db0| 2e 0d 09 20 20 20 20 49 | 66 20 72 61 6e 64 6f 6d |... I|f random| |00001dc0| 6c 79 20 69 6e 20 74 68 | 65 20 6d 69 64 64 6c 65 |ly in th|e middle| |00001dd0| 20 6f 66 20 61 20 70 61 | 74 74 65 72 6e 2c 20 69 | of a pa|ttern, i| |00001de0| 74 20 69 73 20 61 20 6e | 6f 72 6d 61 6c 20 63 68 |t is a n|ormal ch| |00001df0| 61 72 61 63 74 65 72 2e | 20 2a 2f 0d 09 20 20 69 |aracter.| */.. i| |00001e00| 66 20 28 70 20 3d 3d 20 | 70 65 6e 64 20 7c 7c 20 |f (p == |pend || | |00001e10| 2a 70 20 3d 3d 20 27 5c | 72 27 20 20 2f 2a 20 6e |*p == '\|r' /* n| |00001e20| 65 77 6c 69 6e 65 20 63 | 68 61 6e 67 65 64 20 2a |ewline c|hanged *| |00001e30| 2f 0d 09 20 20 20 20 20 | 20 7c 7c 20 28 6f 62 73 |/.. | || (obs| |00001e40| 63 75 72 65 5f 73 79 6e | 74 61 78 20 26 20 52 45 |cure_syn|tax & RE| |00001e50| 5f 43 4f 4e 54 45 58 54 | 5f 49 4e 44 45 50 5f 4f |_CONTEXT|_INDEP_O| |00001e60| 50 53 29 0d 09 20 20 20 | 20 20 20 7c 7c 20 28 6f |PS).. | || (o| |00001e70| 62 73 63 75 72 65 5f 73 | 79 6e 74 61 78 20 26 20 |bscure_s|yntax & | |00001e80| 52 45 5f 4e 4f 5f 42 4b | 5f 50 41 52 45 4e 53 0d |RE_NO_BK|_PARENS.| |00001e90| 09 09 20 20 3f 20 2a 70 | 20 3d 3d 20 27 29 27 0d |.. ? *p| == ')'.| |00001ea0| 09 09 20 20 3a 20 2a 70 | 20 3d 3d 20 27 5c 5c 27 |.. : *p| == '\\'| |00001eb0| 20 26 26 20 70 5b 31 5d | 20 3d 3d 20 27 29 27 29 | && p[1]| == ')')| |00001ec0| 0d 09 20 20 20 20 20 20 | 7c 7c 20 28 6f 62 73 63 |.. ||| (obsc| |00001ed0| 75 72 65 5f 73 79 6e 74 | 61 78 20 26 20 52 45 5f |ure_synt|ax & RE_| |00001ee0| 4e 4f 5f 42 4b 5f 56 42 | 41 52 0d 09 09 20 20 3f |NO_BK_VB|AR... ?| |00001ef0| 20 2a 70 20 3d 3d 20 27 | 7c 27 0d 09 09 20 20 3a | *p == '||'... :| |00001f00| 20 2a 70 20 3d 3d 20 27 | 5c 5c 27 20 26 26 20 70 | *p == '|\\' && p| |00001f10| 5b 31 5d 20 3d 3d 20 27 | 7c 27 29 29 0d 09 20 20 |[1] == '||')).. | |00001f20| 20 20 7b 0d 09 20 20 20 | 20 20 20 50 41 54 50 55 | {.. | PATPU| |00001f30| 53 48 20 28 65 6e 64 6c | 69 6e 65 29 3b 0d 09 20 |SH (endl|ine);.. | |00001f40| 20 20 20 20 20 62 72 65 | 61 6b 3b 0d 09 20 20 20 | bre|ak;.. | |00001f50| 20 7d 0d 09 20 20 67 6f | 74 6f 20 6e 6f 72 6d 61 | }.. go|to norma| |00001f60| 6c 5f 63 68 61 72 3b 0d | 0d 09 63 61 73 65 20 27 |l_char;.|..case '| |00001f70| 5e 27 3a 0d 09 20 20 2f | 2a 20 5e 20 6d 65 61 6e |^':.. /|* ^ mean| |00001f80| 73 20 73 75 63 63 65 65 | 64 20 69 66 20 61 74 20 |s succee|d if at | |00001f90| 62 65 67 20 6f 66 20 6c | 69 6e 65 2c 20 62 75 74 |beg of l|ine, but| |00001fa0| 20 6f 6e 6c 79 20 69 66 | 20 6e 6f 20 70 72 65 63 | only if| no prec| |00001fb0| 65 64 69 6e 67 20 70 61 | 74 74 65 72 6e 2e 20 2a |eding pa|ttern. *| |00001fc0| 2f 0d 0d 09 20 20 69 66 | 20 28 6c 61 73 74 73 74 |/... if| (lastst| |00001fd0| 61 72 74 20 26 26 20 70 | 5b 2d 32 5d 20 21 3d 20 |art && p|[-2] != | |00001fe0| 27 5c 72 27 20 20 2f 2a | 20 6e 65 77 6c 69 6e 65 |'\r' /*| newline| |00001ff0| 20 63 68 61 6e 67 65 64 | 20 2a 2f 0d 09 20 20 20 | changed| */.. | |00002000| 20 20 20 26 26 20 21 20 | 28 6f 62 73 63 75 72 65 | && ! |(obscure| |00002010| 5f 73 79 6e 74 61 78 20 | 26 20 52 45 5f 43 4f 4e |_syntax |& RE_CON| |00002020| 54 45 58 54 5f 49 4e 44 | 45 50 5f 4f 50 53 29 29 |TEXT_IND|EP_OPS))| |00002030| 0d 09 20 20 20 20 67 6f | 74 6f 20 6e 6f 72 6d 61 |.. go|to norma| |00002040| 6c 5f 63 68 61 72 3b 0d | 09 20 20 69 66 20 28 6f |l_char;.|. if (o| |00002050| 62 73 63 75 72 65 5f 73 | 79 6e 74 61 78 20 26 20 |bscure_s|yntax & | |00002060| 52 45 5f 54 49 47 48 54 | 5f 56 42 41 52 29 0d 09 |RE_TIGHT|_VBAR)..| |00002070| 20 20 20 20 7b 0d 09 20 | 20 20 20 20 20 69 66 20 | {.. | if | |00002080| 28 70 20 21 3d 20 70 61 | 74 74 65 72 6e 20 2b 20 |(p != pa|ttern + | |00002090| 31 0d 09 09 20 20 26 26 | 20 21 20 28 6f 62 73 63 |1... &&| ! (obsc| |000020a0| 75 72 65 5f 73 79 6e 74 | 61 78 20 26 20 52 45 5f |ure_synt|ax & RE_| |000020b0| 43 4f 4e 54 45 58 54 5f | 49 4e 44 45 50 5f 4f 50 |CONTEXT_|INDEP_OP| |000020c0| 53 29 29 0d 09 09 67 6f | 74 6f 20 6e 6f 72 6d 61 |S))...go|to norma| |000020d0| 6c 5f 63 68 61 72 3b 0d | 09 20 20 20 20 20 20 50 |l_char;.|. P| |000020e0| 41 54 50 55 53 48 20 28 | 62 65 67 6c 69 6e 65 29 |ATPUSH (|begline)| |000020f0| 3b 0d 09 20 20 20 20 20 | 20 62 65 67 61 6c 74 20 |;.. | begalt | |00002100| 3d 20 62 3b 0d 09 20 20 | 20 20 7d 0d 09 20 20 65 |= b;.. | }.. e| |00002110| 6c 73 65 0d 09 20 20 20 | 20 50 41 54 50 55 53 48 |lse.. | PATPUSH| |00002120| 20 28 62 65 67 6c 69 6e | 65 29 3b 0d 09 20 20 62 | (beglin|e);.. b| |00002130| 72 65 61 6b 3b 0d 0d 09 | 63 61 73 65 20 27 2b 27 |reak;...|case '+'| |00002140| 3a 0d 09 63 61 73 65 20 | 27 3f 27 3a 0d 09 20 20 |:..case |'?':.. | |00002150| 69 66 20 28 6f 62 73 63 | 75 72 65 5f 73 79 6e 74 |if (obsc|ure_synt| |00002160| 61 78 20 26 20 52 45 5f | 42 4b 5f 50 4c 55 53 5f |ax & RE_|BK_PLUS_| |00002170| 51 4d 29 0d 09 20 20 20 | 20 67 6f 74 6f 20 6e 6f |QM).. | goto no| |00002180| 72 6d 61 6c 5f 63 68 61 | 72 3b 0d 09 68 61 6e 64 |rmal_cha|r;..hand| |00002190| 6c 65 5f 70 6c 75 73 3a | 0d 09 63 61 73 65 20 27 |le_plus:|..case '| |000021a0| 2a 27 3a 0d 09 20 20 2f | 2a 20 49 66 20 74 68 65 |*':.. /|* If the| |000021b0| 72 65 20 69 73 20 6e 6f | 20 70 72 65 76 69 6f 75 |re is no| previou| |000021c0| 73 20 70 61 74 74 65 72 | 6e 2c 20 63 68 61 72 20 |s patter|n, char | |000021d0| 6e 6f 74 20 73 70 65 63 | 69 61 6c 2e 20 2a 2f 0d |not spec|ial. */.| |000021e0| 09 20 20 69 66 20 28 21 | 6c 61 73 74 73 74 61 72 |. if (!|laststar| |000021f0| 74 20 26 26 20 21 20 28 | 6f 62 73 63 75 72 65 5f |t && ! (|obscure_| |00002200| 73 79 6e 74 61 78 20 26 | 20 52 45 5f 43 4f 4e 54 |syntax &| RE_CONT| |00002210| 45 58 54 5f 49 4e 44 45 | 50 5f 4f 50 53 29 29 0d |EXT_INDE|P_OPS)).| |00002220| 09 20 20 20 20 67 6f 74 | 6f 20 6e 6f 72 6d 61 6c |. got|o normal| |00002230| 5f 63 68 61 72 3b 0d 09 | 20 20 2f 2a 20 49 66 20 |_char;..| /* If | |00002240| 74 68 65 72 65 20 69 73 | 20 61 20 73 65 71 75 65 |there is| a seque| |00002250| 6e 63 65 20 6f 66 20 72 | 65 70 65 74 69 74 69 6f |nce of r|epetitio| |00002260| 6e 20 63 68 61 72 73 2c | 0d 09 20 20 20 20 20 63 |n chars,|.. c| |00002270| 6f 6c 6c 61 70 73 65 20 | 69 74 20 64 6f 77 6e 20 |ollapse |it down | |00002280| 74 6f 20 65 71 75 69 76 | 61 6c 65 6e 74 20 74 6f |to equiv|alent to| |00002290| 20 6a 75 73 74 20 6f 6e | 65 2e 20 20 2a 2f 0d 09 | just on|e. */..| |000022a0| 20 20 7a 65 72 6f 5f 74 | 69 6d 65 73 5f 6f 6b 20 | zero_t|imes_ok | |000022b0| 3d 20 30 3b 0d 09 20 20 | 6d 61 6e 79 5f 74 69 6d |= 0;.. |many_tim| |000022c0| 65 73 5f 6f 6b 20 3d 20 | 30 3b 0d 09 20 20 77 68 |es_ok = |0;.. wh| |000022d0| 69 6c 65 20 28 31 29 0d | 09 20 20 20 20 7b 0d 09 |ile (1).|. {..| |000022e0| 20 20 20 20 20 20 7a 65 | 72 6f 5f 74 69 6d 65 73 | ze|ro_times| |000022f0| 5f 6f 6b 20 7c 3d 20 63 | 20 21 3d 20 27 2b 27 3b |_ok |= c| != '+';| |00002300| 0d 09 20 20 20 20 20 20 | 6d 61 6e 79 5f 74 69 6d |.. |many_tim| |00002310| 65 73 5f 6f 6b 20 7c 3d | 20 63 20 21 3d 20 27 3f |es_ok |=| c != '?| |00002320| 27 3b 0d 09 20 20 20 20 | 20 20 69 66 20 28 70 20 |';.. | if (p | |00002330| 3d 3d 20 70 65 6e 64 29 | 0d 09 09 62 72 65 61 6b |== pend)|...break| |00002340| 3b 0d 09 20 20 20 20 20 | 20 50 41 54 46 45 54 43 |;.. | PATFETC| |00002350| 48 20 28 63 29 3b 0d 09 | 20 20 20 20 20 20 69 66 |H (c);..| if| |00002360| 20 28 63 20 3d 3d 20 27 | 2a 27 29 0d 09 09 3b 0d | (c == '|*')...;.| |00002370| 09 20 20 20 20 20 20 65 | 6c 73 65 20 69 66 20 28 |. e|lse if (| |00002380| 21 28 6f 62 73 63 75 72 | 65 5f 73 79 6e 74 61 78 |!(obscur|e_syntax| |00002390| 20 26 20 52 45 5f 42 4b | 5f 50 4c 55 53 5f 51 4d | & RE_BK|_PLUS_QM| |000023a0| 29 0d 09 09 20 20 20 20 | 20 20 20 26 26 20 28 63 |)... | && (c| |000023b0| 20 3d 3d 20 27 2b 27 20 | 7c 7c 20 63 20 3d 3d 20 | == '+' ||| c == | |000023c0| 27 3f 27 29 29 0d 09 09 | 3b 0d 09 20 20 20 20 20 |'?'))...|;.. | |000023d0| 20 65 6c 73 65 20 69 66 | 20 28 28 6f 62 73 63 75 | else if| ((obscu| |000023e0| 72 65 5f 73 79 6e 74 61 | 78 20 26 20 52 45 5f 42 |re_synta|x & RE_B| |000023f0| 4b 5f 50 4c 55 53 5f 51 | 4d 29 0d 09 09 20 20 20 |K_PLUS_Q|M)... | |00002400| 20 20 20 20 26 26 20 63 | 20 3d 3d 20 27 5c 5c 27 | && c| == '\\'| |00002410| 29 0d 09 09 7b 0d 09 09 | 20 20 69 6e 74 20 63 31 |)...{...| int c1| |00002420| 3b 0d 09 09 20 20 50 41 | 54 46 45 54 43 48 20 28 |;... PA|TFETCH (| |00002430| 63 31 29 3b 0d 09 09 20 | 20 69 66 20 28 21 28 63 |c1);... | if (!(c| |00002440| 31 20 3d 3d 20 27 2b 27 | 20 7c 7c 20 63 31 20 3d |1 == '+'| || c1 =| |00002450| 3d 20 27 3f 27 29 29 0d | 09 09 20 20 20 20 7b 0d |= '?')).|.. {.| |00002460| 09 09 20 20 20 20 20 20 | 50 41 54 55 4e 46 45 54 |.. |PATUNFET| |00002470| 43 48 3b 0d 09 09 20 20 | 20 20 20 20 50 41 54 55 |CH;... | PATU| |00002480| 4e 46 45 54 43 48 3b 0d | 09 09 20 20 20 20 20 20 |NFETCH;.|.. | |00002490| 62 72 65 61 6b 3b 0d 09 | 09 20 20 20 20 7d 0d 09 |break;..|. }..| |000024a0| 09 20 20 63 20 3d 20 63 | 31 3b 0d 09 09 7d 0d 09 |. c = c|1;...}..| |000024b0| 20 20 20 20 20 20 65 6c | 73 65 0d 09 09 7b 0d 09 | el|se...{..| |000024c0| 09 20 20 50 41 54 55 4e | 46 45 54 43 48 3b 0d 09 |. PATUN|FETCH;..| |000024d0| 09 20 20 62 72 65 61 6b | 3b 0d 09 09 7d 0d 09 20 |. break|;...}.. | |000024e0| 20 20 20 7d 0d 0d 09 20 | 20 2f 2a 20 53 74 61 72 | }... | /* Star| |000024f0| 2c 20 65 74 63 2e 20 61 | 70 70 6c 69 65 64 20 74 |, etc. a|pplied t| |00002500| 6f 20 61 6e 20 65 6d 70 | 74 79 20 70 61 74 74 65 |o an emp|ty patte| |00002510| 72 6e 20 69 73 20 65 71 | 75 69 76 61 6c 65 6e 74 |rn is eq|uivalent| |00002520| 0d 09 20 20 20 20 20 74 | 6f 20 61 6e 20 65 6d 70 |.. t|o an emp| |00002530| 74 79 20 70 61 74 74 65 | 72 6e 2e 20 20 2a 2f 0d |ty patte|rn. */.| |00002540| 09 20 20 69 66 20 28 21 | 6c 61 73 74 73 74 61 72 |. if (!|laststar| |00002550| 74 29 0d 09 20 20 20 20 | 62 72 65 61 6b 3b 0d 0d |t).. |break;..| |00002560| 09 20 20 2f 2a 20 4e 6f | 77 20 77 65 20 6b 6e 6f |. /* No|w we kno| |00002570| 77 20 77 68 65 74 68 65 | 72 20 30 20 6d 61 74 63 |w whethe|r 0 matc| |00002580| 68 65 73 20 69 73 20 61 | 6c 6c 6f 77 65 64 2c 0d |hes is a|llowed,.| |00002590| 09 20 20 20 20 20 61 6e | 64 20 77 68 65 74 68 65 |. an|d whethe| |000025a0| 72 20 32 20 6f 72 20 6d | 6f 72 65 20 6d 61 74 63 |r 2 or m|ore matc| |000025b0| 68 65 73 20 69 73 20 61 | 6c 6c 6f 77 65 64 2e 20 |hes is a|llowed. | |000025c0| 20 2a 2f 0d 09 20 20 69 | 66 20 28 6d 61 6e 79 5f | */.. i|f (many_| |000025d0| 74 69 6d 65 73 5f 6f 6b | 29 0d 09 20 20 20 20 7b |times_ok|).. {| |000025e0| 0d 09 20 20 20 20 20 20 | 2f 2a 20 49 66 20 6d 6f |.. |/* If mo| |000025f0| 72 65 20 74 68 61 6e 20 | 6f 6e 65 20 72 65 70 65 |re than |one repe| |00002600| 74 69 74 69 6f 6e 20 69 | 73 20 61 6c 6c 6f 77 65 |tition i|s allowe| |00002610| 64 2c 0d 09 09 20 70 75 | 74 20 69 6e 20 61 20 62 |d,... pu|t in a b| |00002620| 61 63 6b 77 61 72 64 20 | 6a 75 6d 70 20 61 74 20 |ackward |jump at | |00002630| 74 68 65 20 65 6e 64 2e | 20 20 2a 2f 0d 09 20 20 |the end.| */.. | |00002640| 20 20 20 20 73 74 6f 72 | 65 5f 6a 75 6d 70 20 28 | stor|e_jump (| |00002650| 62 2c 20 6d 61 79 62 65 | 5f 66 69 6e 61 6c 69 7a |b, maybe|_finaliz| |00002660| 65 5f 6a 75 6d 70 2c 20 | 6c 61 73 74 73 74 61 72 |e_jump, |laststar| |00002670| 74 20 2d 20 33 29 3b 0d | 09 20 20 20 20 20 20 62 |t - 3);.|. b| |00002680| 20 2b 3d 20 33 3b 0d 09 | 20 20 20 20 7d 0d 09 20 | += 3;..| }.. | |00002690| 20 69 6e 73 65 72 74 5f | 6a 75 6d 70 20 28 6f 6e | insert_|jump (on| |000026a0| 5f 66 61 69 6c 75 72 65 | 5f 6a 75 6d 70 2c 20 6c |_failure|_jump, l| |000026b0| 61 73 74 73 74 61 72 74 | 2c 20 62 20 2b 20 33 2c |aststart|, b + 3,| |000026c0| 20 62 29 3b 0d 09 20 20 | 70 65 6e 64 69 6e 67 5f | b);.. |pending_| |000026d0| 65 78 61 63 74 20 3d 20 | 30 3b 0d 09 20 20 62 20 |exact = |0;.. b | |000026e0| 2b 3d 20 33 3b 0d 09 20 | 20 69 66 20 28 21 7a 65 |+= 3;.. | if (!ze| |000026f0| 72 6f 5f 74 69 6d 65 73 | 5f 6f 6b 29 0d 09 20 20 |ro_times|_ok).. | |00002700| 20 20 7b 0d 09 20 20 20 | 20 20 20 2f 2a 20 41 74 | {.. | /* At| |00002710| 20 6c 65 61 73 74 20 6f | 6e 65 20 72 65 70 65 74 | least o|ne repet| |00002720| 69 74 69 6f 6e 20 72 65 | 71 75 69 72 65 64 3a 20 |ition re|quired: | |00002730| 69 6e 73 65 72 74 20 62 | 65 66 6f 72 65 20 74 68 |insert b|efore th| |00002740| 65 20 6c 6f 6f 70 0d 09 | 09 20 61 20 73 6b 69 70 |e loop..|. a skip| |00002750| 20 6f 76 65 72 20 74 68 | 65 20 69 6e 69 74 69 61 | over th|e initia| |00002760| 6c 20 6f 6e 2d 66 61 69 | 6c 75 72 65 2d 6a 75 6d |l on-fai|lure-jum| |00002770| 70 20 69 6e 73 74 72 75 | 63 74 69 6f 6e 20 2a 2f |p instru|ction */| |00002780| 0d 09 20 20 20 20 20 20 | 69 6e 73 65 72 74 5f 6a |.. |insert_j| |00002790| 75 6d 70 20 28 64 75 6d | 6d 79 5f 66 61 69 6c 75 |ump (dum|my_failu| |000027a0| 72 65 5f 6a 75 6d 70 2c | 20 6c 61 73 74 73 74 61 |re_jump,| laststa| |000027b0| 72 74 2c 20 6c 61 73 74 | 73 74 61 72 74 20 2b 20 |rt, last|start + | |000027c0| 36 2c 20 62 29 3b 0d 09 | 20 20 20 20 20 20 62 20 |6, b);..| b | |000027d0| 2b 3d 20 33 3b 0d 09 20 | 20 20 20 7d 0d 09 20 20 |+= 3;.. | }.. | |000027e0| 62 72 65 61 6b 3b 0d 0d | 09 63 61 73 65 20 27 2e |break;..|.case '.| |000027f0| 27 3a 0d 09 20 20 6c 61 | 73 74 73 74 61 72 74 20 |':.. la|ststart | |00002800| 3d 20 62 3b 0d 09 20 20 | 50 41 54 50 55 53 48 20 |= b;.. |PATPUSH | |00002810| 28 61 6e 79 63 68 61 72 | 29 3b 0d 09 20 20 62 72 |(anychar|);.. br| |00002820| 65 61 6b 3b 0d 0d 09 63 | 61 73 65 20 27 5b 27 3a |eak;...c|ase '[':| |00002830| 0d 09 20 20 77 68 69 6c | 65 20 28 62 20 2d 20 62 |.. whil|e (b - b| |00002840| 75 66 70 2d 3e 62 75 66 | 66 65 72 0d 09 09 20 3e |ufp->buf|fer... >| |00002850| 20 62 75 66 70 2d 3e 61 | 6c 6c 6f 63 61 74 65 64 | bufp->a|llocated| |00002860| 20 2d 20 33 20 2d 20 28 | 31 20 3c 3c 20 42 59 54 | - 3 - (|1 << BYT| |00002870| 45 57 49 44 54 48 29 20 | 2f 20 42 59 54 45 57 49 |EWIDTH) |/ BYTEWI| |00002880| 44 54 48 29 0d 09 20 20 | 20 20 2f 2a 20 4e 6f 74 |DTH).. | /* Not| |00002890| 65 20 74 68 61 74 20 45 | 58 54 45 4e 44 5f 42 55 |e that E|XTEND_BU| |000028a0| 46 46 45 52 20 63 6c 6f | 62 62 65 72 73 20 63 20 |FFER clo|bbers c | |000028b0| 2a 2f 0d 09 20 20 20 20 | 45 58 54 45 4e 44 5f 42 |*/.. |EXTEND_B| |000028c0| 55 46 46 45 52 3b 0d 0d | 09 20 20 6c 61 73 74 73 |UFFER;..|. lasts| |000028d0| 74 61 72 74 20 3d 20 62 | 3b 0d 09 20 20 69 66 20 |tart = b|;.. if | |000028e0| 28 2a 70 20 3d 3d 20 27 | 5e 27 29 0d 09 20 20 20 |(*p == '|^').. | |000028f0| 20 50 41 54 50 55 53 48 | 20 28 63 68 61 72 73 65 | PATPUSH| (charse| |00002900| 74 5f 6e 6f 74 29 2c 20 | 70 2b 2b 3b 0d 09 20 20 |t_not), |p++;.. | |00002910| 65 6c 73 65 0d 09 20 20 | 20 20 50 41 54 50 55 53 |else.. | PATPUS| |00002920| 48 20 28 63 68 61 72 73 | 65 74 29 3b 0d 09 20 20 |H (chars|et);.. | |00002930| 70 31 20 3d 20 70 3b 0d | 0d 09 20 20 50 41 54 50 |p1 = p;.|.. PATP| |00002940| 55 53 48 20 28 28 31 20 | 3c 3c 20 42 59 54 45 57 |USH ((1 |<< BYTEW| |00002950| 49 44 54 48 29 20 2f 20 | 42 59 54 45 57 49 44 54 |IDTH) / |BYTEWIDT| |00002960| 48 29 3b 0d 09 20 20 2f | 2a 20 43 6c 65 61 72 20 |H);.. /|* Clear | |00002970| 74 68 65 20 77 68 6f 6c | 65 20 6d 61 70 20 2a 2f |the whol|e map */| |00002980| 0d 09 20 20 62 7a 65 72 | 6f 20 28 62 2c 20 28 31 |.. bzer|o (b, (1| |00002990| 20 3c 3c 20 42 59 54 45 | 57 49 44 54 48 29 20 2f | << BYTE|WIDTH) /| |000029a0| 20 42 59 54 45 57 49 44 | 54 48 29 3b 0d 09 20 20 | BYTEWID|TH);.. | |000029b0| 2f 2a 20 52 65 61 64 20 | 69 6e 20 63 68 61 72 61 |/* Read |in chara| |000029c0| 63 74 65 72 73 20 61 6e | 64 20 72 61 6e 67 65 73 |cters an|d ranges| |000029d0| 2c 20 73 65 74 74 69 6e | 67 20 6d 61 70 20 62 69 |, settin|g map bi| |000029e0| 74 73 20 2a 2f 0d 09 20 | 20 77 68 69 6c 65 20 28 |ts */.. | while (| |000029f0| 31 29 0d 09 20 20 20 20 | 7b 0d 09 20 20 20 20 20 |1).. |{.. | |00002a00| 20 50 41 54 46 45 54 43 | 48 20 28 63 29 3b 0d 09 | PATFETC|H (c);..| |00002a10| 20 20 20 20 20 20 69 66 | 20 28 63 20 3d 3d 20 27 | if| (c == '| |00002a20| 5d 27 20 26 26 20 70 20 | 21 3d 20 70 31 20 2b 20 |]' && p |!= p1 + | |00002a30| 31 29 20 62 72 65 61 6b | 3b 0d 09 20 20 20 20 20 |1) break|;.. | |00002a40| 20 69 66 20 28 2a 70 20 | 3d 3d 20 27 2d 27 20 26 | if (*p |== '-' &| |00002a50| 26 20 70 5b 31 5d 20 21 | 3d 20 27 5d 27 29 0d 09 |& p[1] !|= ']')..| |00002a60| 09 7b 0d 09 09 20 20 50 | 41 54 46 45 54 43 48 20 |.{... P|ATFETCH | |00002a70| 28 63 31 29 3b 0d 09 09 | 20 20 50 41 54 46 45 54 |(c1);...| PATFET| |00002a80| 43 48 20 28 63 31 29 3b | 0d 09 09 20 20 77 68 69 |CH (c1);|... whi| |00002a90| 6c 65 20 28 63 20 3c 3d | 20 63 31 29 0d 09 09 20 |le (c <=| c1)... | |00002aa0| 20 20 20 62 5b 63 20 2f | 20 42 59 54 45 57 49 44 | b[c /| BYTEWID| |00002ab0| 54 48 5d 20 7c 3d 20 31 | 20 3c 3c 20 28 63 20 25 |TH] |= 1| << (c %| |00002ac0| 20 42 59 54 45 57 49 44 | 54 48 29 2c 20 63 2b 2b | BYTEWID|TH), c++| |00002ad0| 3b 0d 09 09 7d 0d 09 20 | 20 20 20 20 20 65 6c 73 |;...}.. | els| |00002ae0| 65 0d 09 09 7b 0d 09 09 | 20 20 62 5b 63 20 2f 20 |e...{...| b[c / | |00002af0| 42 59 54 45 57 49 44 54 | 48 5d 20 7c 3d 20 31 20 |BYTEWIDT|H] |= 1 | |00002b00| 3c 3c 20 28 63 20 25 20 | 42 59 54 45 57 49 44 54 |<< (c % |BYTEWIDT| |00002b10| 48 29 3b 0d 09 09 7d 0d | 09 20 20 20 20 7d 0d 09 |H);...}.|. }..| |00002b20| 20 20 2f 2a 20 44 69 73 | 63 61 72 64 20 61 6e 79 | /* Dis|card any| |00002b30| 20 62 69 74 6d 61 70 20 | 62 79 74 65 73 20 74 68 | bitmap |bytes th| |00002b40| 61 74 20 61 72 65 20 61 | 6c 6c 20 30 20 61 74 20 |at are a|ll 0 at | |00002b50| 74 68 65 20 65 6e 64 20 | 6f 66 20 74 68 65 20 6d |the end |of the m| |00002b60| 61 70 2e 0d 09 20 20 20 | 20 20 44 65 63 72 65 6d |ap... | Decrem| |00002b70| 65 6e 74 20 74 68 65 20 | 6d 61 70 2d 6c 65 6e 67 |ent the |map-leng| |00002b80| 74 68 20 62 79 74 65 20 | 74 6f 6f 2e 20 2a 2f 0d |th byte |too. */.| |00002b90| 09 20 20 77 68 69 6c 65 | 20 28 28 69 6e 74 29 20 |. while| ((int) | |00002ba0| 62 5b 2d 31 5d 20 3e 20 | 30 20 26 26 20 62 5b 62 |b[-1] > |0 && b[b| |00002bb0| 5b 2d 31 5d 20 2d 20 31 | 5d 20 3d 3d 20 30 29 0d |[-1] - 1|] == 0).| |00002bc0| 09 20 20 20 20 62 5b 2d | 31 5d 2d 2d 3b 0d 09 20 |. b[-|1]--;.. | |00002bd0| 20 62 20 2b 3d 20 62 5b | 2d 31 5d 3b 0d 09 20 20 | b += b[|-1];.. | |00002be0| 62 72 65 61 6b 3b 0d 0d | 09 63 61 73 65 20 27 28 |break;..|.case '(| |00002bf0| 27 3a 0d 09 20 20 69 66 | 20 28 21 20 28 6f 62 73 |':.. if| (! (obs| |00002c00| 63 75 72 65 5f 73 79 6e | 74 61 78 20 26 20 52 45 |cure_syn|tax & RE| |00002c10| 5f 4e 4f 5f 42 4b 5f 50 | 41 52 45 4e 53 29 29 0d |_NO_BK_P|ARENS)).| |00002c20| 09 20 20 20 20 67 6f 74 | 6f 20 6e 6f 72 6d 61 6c |. got|o normal| |00002c30| 5f 63 68 61 72 3b 0d 09 | 20 20 65 6c 73 65 0d 09 |_char;..| else..| |00002c40| 20 20 20 20 67 6f 74 6f | 20 68 61 6e 64 6c 65 5f | goto| handle_| |00002c50| 6f 70 65 6e 3b 0d 0d 09 | 63 61 73 65 20 27 29 27 |open;...|case ')'| |00002c60| 3a 0d 09 20 20 69 66 20 | 28 21 20 28 6f 62 73 63 |:.. if |(! (obsc| |00002c70| 75 72 65 5f 73 79 6e 74 | 61 78 20 26 20 52 45 5f |ure_synt|ax & RE_| |00002c80| 4e 4f 5f 42 4b 5f 50 41 | 52 45 4e 53 29 29 0d 09 |NO_BK_PA|RENS))..| |00002c90| 20 20 20 20 67 6f 74 6f | 20 6e 6f 72 6d 61 6c 5f | goto| normal_| |00002ca0| 63 68 61 72 3b 0d 09 20 | 20 65 6c 73 65 0d 09 20 |char;.. | else.. | |00002cb0| 20 20 20 67 6f 74 6f 20 | 68 61 6e 64 6c 65 5f 63 | goto |handle_c| |00002cc0| 6c 6f 73 65 3b 0d 0d 09 | 63 61 73 65 20 27 5c 72 |lose;...|case '\r| |00002cd0| 27 3a 20 20 2f 2a 20 6e | 65 77 6c 69 6e 65 20 63 |': /* n|ewline c| |00002ce0| 68 61 6e 67 65 64 20 2a | 2f 0d 09 20 20 69 66 20 |hanged *|/.. if | |00002cf0| 28 21 20 28 6f 62 73 63 | 75 72 65 5f 73 79 6e 74 |(! (obsc|ure_synt| |00002d00| 61 78 20 26 20 52 45 5f | 4e 45 57 4c 49 4e 45 5f |ax & RE_|NEWLINE_| |00002d10| 4f 52 29 29 0d 09 20 20 | 20 20 67 6f 74 6f 20 6e |OR)).. | goto n| |00002d20| 6f 72 6d 61 6c 5f 63 68 | 61 72 3b 0d 09 20 20 65 |ormal_ch|ar;.. e| |00002d30| 6c 73 65 0d 09 20 20 20 | 20 67 6f 74 6f 20 68 61 |lse.. | goto ha| |00002d40| 6e 64 6c 65 5f 62 61 72 | 3b 0d 0d 09 63 61 73 65 |ndle_bar|;...case| |00002d50| 20 27 7c 27 3a 0d 09 20 | 20 69 66 20 28 21 20 28 | '|':.. | if (! (| |00002d60| 6f 62 73 63 75 72 65 5f | 73 79 6e 74 61 78 20 26 |obscure_|syntax &| |00002d70| 20 52 45 5f 4e 4f 5f 42 | 4b 5f 56 42 41 52 29 29 | RE_NO_B|K_VBAR))| |00002d80| 0d 09 20 20 20 20 67 6f | 74 6f 20 6e 6f 72 6d 61 |.. go|to norma| |00002d90| 6c 5f 63 68 61 72 3b 0d | 09 20 20 65 6c 73 65 0d |l_char;.|. else.| |00002da0| 09 20 20 20 20 67 6f 74 | 6f 20 68 61 6e 64 6c 65 |. got|o handle| |00002db0| 5f 62 61 72 3b 0d 0d 20 | 20 20 20 20 20 20 20 63 |_bar;.. | c| |00002dc0| 61 73 65 20 27 5c 5c 27 | 3a 0d 09 20 20 69 66 20 |ase '\\'|:.. if | |00002dd0| 28 70 20 3d 3d 20 70 65 | 6e 64 29 20 67 6f 74 6f |(p == pe|nd) goto| |00002de0| 20 69 6e 76 61 6c 69 64 | 5f 70 61 74 74 65 72 6e | invalid|_pattern| |00002df0| 3b 0d 09 20 20 50 41 54 | 46 45 54 43 48 5f 52 41 |;.. PAT|FETCH_RA| |00002e00| 57 20 28 63 29 3b 0d 09 | 20 20 73 77 69 74 63 68 |W (c);..| switch| |00002e10| 20 28 63 29 0d 09 20 20 | 20 20 7b 0d 09 20 20 20 | (c).. | {.. | |00002e20| 20 63 61 73 65 20 27 28 | 27 3a 0d 09 20 20 20 20 | case '(|':.. | |00002e30| 20 20 69 66 20 28 6f 62 | 73 63 75 72 65 5f 73 79 | if (ob|scure_sy| |00002e40| 6e 74 61 78 20 26 20 52 | 45 5f 4e 4f 5f 42 4b 5f |ntax & R|E_NO_BK_| |00002e50| 50 41 52 45 4e 53 29 0d | 09 09 67 6f 74 6f 20 6e |PARENS).|..goto n| |00002e60| 6f 72 6d 61 6c 5f 62 61 | 63 6b 73 6c 3b 0d 09 20 |ormal_ba|cksl;.. | |00002e70| 20 20 20 68 61 6e 64 6c | 65 5f 6f 70 65 6e 3a 0d | handl|e_open:.| |00002e80| 09 20 20 20 20 20 20 69 | 66 20 28 73 74 61 63 6b |. i|f (stack| |00002e90| 70 20 3d 3d 20 73 74 61 | 63 6b 65 29 20 67 6f 74 |p == sta|cke) got| |00002ea0| 6f 20 6e 65 73 74 69 6e | 67 5f 74 6f 6f 5f 64 65 |o nestin|g_too_de| |00002eb0| 65 70 3b 0d 09 20 20 20 | 20 20 20 69 66 20 28 72 |ep;.. | if (r| |00002ec0| 65 67 6e 75 6d 20 3c 20 | 52 45 5f 4e 52 45 47 53 |egnum < |RE_NREGS| |00002ed0| 29 0d 09 20 20 20 20 20 | 20 20 20 7b 0d 09 09 20 |).. | {... | |00002ee0| 20 50 41 54 50 55 53 48 | 20 28 73 74 61 72 74 5f | PATPUSH| (start_| |00002ef0| 6d 65 6d 6f 72 79 29 3b | 0d 09 09 20 20 50 41 54 |memory);|... PAT| |00002f00| 50 55 53 48 20 28 72 65 | 67 6e 75 6d 29 3b 0d 09 |PUSH (re|gnum);..| |00002f10| 20 20 20 20 20 20 20 20 | 7d 0d 09 20 20 20 20 20 | |}.. | |00002f20| 20 2a 73 74 61 63 6b 70 | 2b 2b 20 3d 20 62 20 2d | *stackp|++ = b -| |00002f30| 20 62 75 66 70 2d 3e 62 | 75 66 66 65 72 3b 0d 09 | bufp->b|uffer;..| |00002f40| 20 20 20 20 20 20 2a 73 | 74 61 63 6b 70 2b 2b 20 | *s|tackp++ | |00002f50| 3d 20 66 69 78 75 70 5f | 6a 75 6d 70 20 3f 20 66 |= fixup_|jump ? f| |00002f60| 69 78 75 70 5f 6a 75 6d | 70 20 2d 20 62 75 66 70 |ixup_jum|p - bufp| |00002f70| 2d 3e 62 75 66 66 65 72 | 20 2b 20 31 20 3a 20 30 |->buffer| + 1 : 0| |00002f80| 3b 0d 09 20 20 20 20 20 | 20 2a 73 74 61 63 6b 70 |;.. | *stackp| |00002f90| 2b 2b 20 3d 20 72 65 67 | 6e 75 6d 2b 2b 3b 0d 09 |++ = reg|num++;..| |00002fa0| 20 20 20 20 20 20 2a 73 | 74 61 63 6b 70 2b 2b 20 | *s|tackp++ | |00002fb0| 3d 20 62 65 67 61 6c 74 | 20 2d 20 62 75 66 70 2d |= begalt| - bufp-| |00002fc0| 3e 62 75 66 66 65 72 3b | 0d 09 20 20 20 20 20 20 |>buffer;|.. | |00002fd0| 66 69 78 75 70 5f 6a 75 | 6d 70 20 3d 20 30 3b 0d |fixup_ju|mp = 0;.| |00002fe0| 09 20 20 20 20 20 20 6c | 61 73 74 73 74 61 72 74 |. l|aststart| |00002ff0| 20 3d 20 30 3b 0d 09 20 | 20 20 20 20 20 62 65 67 | = 0;.. | beg| |00003000| 61 6c 74 20 3d 20 62 3b | 0d 09 20 20 20 20 20 20 |alt = b;|.. | |00003010| 62 72 65 61 6b 3b 0d 0d | 09 20 20 20 20 63 61 73 |break;..|. cas| |00003020| 65 20 27 29 27 3a 0d 09 | 20 20 20 20 20 20 69 66 |e ')':..| if| |00003030| 20 28 6f 62 73 63 75 72 | 65 5f 73 79 6e 74 61 78 | (obscur|e_syntax| |00003040| 20 26 20 52 45 5f 4e 4f | 5f 42 4b 5f 50 41 52 45 | & RE_NO|_BK_PARE| |00003050| 4e 53 29 0d 09 09 67 6f | 74 6f 20 6e 6f 72 6d 61 |NS)...go|to norma| |00003060| 6c 5f 62 61 63 6b 73 6c | 3b 0d 09 20 20 20 20 68 |l_backsl|;.. h| |00003070| 61 6e 64 6c 65 5f 63 6c | 6f 73 65 3a 0d 09 20 20 |andle_cl|ose:.. | |00003080| 20 20 20 20 69 66 20 28 | 73 74 61 63 6b 70 20 3d | if (|stackp =| |00003090| 3d 20 73 74 61 63 6b 62 | 29 20 67 6f 74 6f 20 75 |= stackb|) goto u| |000030a0| 6e 6d 61 74 63 68 65 64 | 5f 63 6c 6f 73 65 3b 0d |nmatched|_close;.| |000030b0| 09 20 20 20 20 20 20 62 | 65 67 61 6c 74 20 3d 20 |. b|egalt = | |000030c0| 2a 2d 2d 73 74 61 63 6b | 70 20 2b 20 62 75 66 70 |*--stack|p + bufp| |000030d0| 2d 3e 62 75 66 66 65 72 | 3b 0d 09 20 20 20 20 20 |->buffer|;.. | |000030e0| 20 69 66 20 28 66 69 78 | 75 70 5f 6a 75 6d 70 29 | if (fix|up_jump)| |000030f0| 0d 09 09 73 74 6f 72 65 | 5f 6a 75 6d 70 20 28 66 |...store|_jump (f| |00003100| 69 78 75 70 5f 6a 75 6d | 70 2c 20 6a 75 6d 70 2c |ixup_jum|p, jump,| |00003110| 20 62 29 3b 0d 09 20 20 | 20 20 20 20 69 66 20 28 | b);.. | if (| |00003120| 73 74 61 63 6b 70 5b 2d | 31 5d 20 3c 20 52 45 5f |stackp[-|1] < RE_| |00003130| 4e 52 45 47 53 29 0d 09 | 09 7b 0d 09 09 20 20 50 |NREGS)..|.{... P| |00003140| 41 54 50 55 53 48 20 28 | 73 74 6f 70 5f 6d 65 6d |ATPUSH (|stop_mem| |00003150| 6f 72 79 29 3b 0d 09 09 | 20 20 50 41 54 50 55 53 |ory);...| PATPUS| |00003160| 48 20 28 73 74 61 63 6b | 70 5b 2d 31 5d 29 3b 0d |H (stack|p[-1]);.| |00003170| 09 09 7d 0d 09 20 20 20 | 20 20 20 73 74 61 63 6b |..}.. | stack| |00003180| 70 20 2d 3d 20 32 3b 0d | 09 20 20 20 20 20 20 66 |p -= 2;.|. f| |00003190| 69 78 75 70 5f 6a 75 6d | 70 20 3d 20 30 3b 0d 09 |ixup_jum|p = 0;..| |000031a0| 20 20 20 20 20 20 69 66 | 20 28 2a 73 74 61 63 6b | if| (*stack| |000031b0| 70 29 0d 09 09 66 69 78 | 75 70 5f 6a 75 6d 70 20 |p)...fix|up_jump | |000031c0| 3d 20 2a 73 74 61 63 6b | 70 20 2b 20 62 75 66 70 |= *stack|p + bufp| |000031d0| 2d 3e 62 75 66 66 65 72 | 20 2d 20 31 3b 0d 09 20 |->buffer| - 1;.. | |000031e0| 20 20 20 20 20 6c 61 73 | 74 73 74 61 72 74 20 3d | las|tstart =| |000031f0| 20 2a 2d 2d 73 74 61 63 | 6b 70 20 2b 20 62 75 66 | *--stac|kp + buf| |00003200| 70 2d 3e 62 75 66 66 65 | 72 3b 0d 09 20 20 20 20 |p->buffe|r;.. | |00003210| 20 20 62 72 65 61 6b 3b | 0d 0d 09 20 20 20 20 63 | break;|... c| |00003220| 61 73 65 20 27 7c 27 3a | 0d 09 20 20 20 20 20 20 |ase '|':|.. | |00003230| 69 66 20 28 6f 62 73 63 | 75 72 65 5f 73 79 6e 74 |if (obsc|ure_synt| |00003240| 61 78 20 26 20 52 45 5f | 4e 4f 5f 42 4b 5f 56 42 |ax & RE_|NO_BK_VB| |00003250| 41 52 29 0d 09 09 67 6f | 74 6f 20 6e 6f 72 6d 61 |AR)...go|to norma| |00003260| 6c 5f 62 61 63 6b 73 6c | 3b 0d 09 20 20 20 20 68 |l_backsl|;.. h| |00003270| 61 6e 64 6c 65 5f 62 61 | 72 3a 0d 09 20 20 20 20 |andle_ba|r:.. | |00003280| 20 20 69 6e 73 65 72 74 | 5f 6a 75 6d 70 20 28 6f | insert|_jump (o| |00003290| 6e 5f 66 61 69 6c 75 72 | 65 5f 6a 75 6d 70 2c 20 |n_failur|e_jump, | |000032a0| 62 65 67 61 6c 74 2c 20 | 62 20 2b 20 36 2c 20 62 |begalt, |b + 6, b| |000032b0| 29 3b 0d 09 20 20 20 20 | 20 20 70 65 6e 64 69 6e |);.. | pendin| |000032c0| 67 5f 65 78 61 63 74 20 | 3d 20 30 3b 0d 09 20 20 |g_exact |= 0;.. | |000032d0| 20 20 20 20 62 20 2b 3d | 20 33 3b 0d 09 20 20 20 | b +=| 3;.. | |000032e0| 20 20 20 69 66 20 28 66 | 69 78 75 70 5f 6a 75 6d | if (f|ixup_jum| |000032f0| 70 29 0d 09 09 73 74 6f | 72 65 5f 6a 75 6d 70 20 |p)...sto|re_jump | |00003300| 28 66 69 78 75 70 5f 6a | 75 6d 70 2c 20 6a 75 6d |(fixup_j|ump, jum| |00003310| 70 2c 20 62 29 3b 0d 09 | 20 20 20 20 20 20 66 69 |p, b);..| fi| |00003320| 78 75 70 5f 6a 75 6d 70 | 20 3d 20 62 3b 0d 09 20 |xup_jump| = b;.. | |00003330| 20 20 20 20 20 62 20 2b | 3d 20 33 3b 0d 09 20 20 | b +|= 3;.. | |00003340| 20 20 20 20 6c 61 73 74 | 73 74 61 72 74 20 3d 20 | last|start = | |00003350| 30 3b 0d 09 20 20 20 20 | 20 20 62 65 67 61 6c 74 |0;.. | begalt| |00003360| 20 3d 20 62 3b 0d 09 20 | 20 20 20 20 20 62 72 65 | = b;.. | bre| |00003370| 61 6b 3b 0d 0d 23 69 66 | 64 65 66 20 65 6d 61 63 |ak;..#if|def emac| |00003380| 73 0d 09 20 20 20 20 63 | 61 73 65 20 27 3d 27 3a |s.. c|ase '=':| |00003390| 0d 09 20 20 20 20 20 20 | 50 41 54 50 55 53 48 20 |.. |PATPUSH | |000033a0| 28 61 74 5f 64 6f 74 29 | 3b 0d 09 20 20 20 20 20 |(at_dot)|;.. | |000033b0| 20 62 72 65 61 6b 3b 0d | 0d 09 20 20 20 20 63 61 | break;.|.. ca| |000033c0| 73 65 20 27 73 27 3a 09 | 0d 09 20 20 20 20 20 20 |se 's':.|.. | |000033d0| 6c 61 73 74 73 74 61 72 | 74 20 3d 20 62 3b 0d 09 |laststar|t = b;..| |000033e0| 20 20 20 20 20 20 50 41 | 54 50 55 53 48 20 28 73 | PA|TPUSH (s| |000033f0| 79 6e 74 61 78 73 70 65 | 63 29 3b 0d 09 20 20 20 |yntaxspe|c);.. | |00003400| 20 20 20 50 41 54 46 45 | 54 43 48 20 28 63 29 3b | PATFE|TCH (c);| |00003410| 0d 09 20 20 20 20 20 20 | 50 41 54 50 55 53 48 20 |.. |PATPUSH | |00003420| 28 73 79 6e 74 61 78 5f | 73 70 65 63 5f 63 6f 64 |(syntax_|spec_cod| |00003430| 65 5b 63 5d 29 3b 0d 09 | 20 20 20 20 20 20 62 72 |e[c]);..| br| |00003440| 65 61 6b 3b 0d 0d 09 20 | 20 20 20 63 61 73 65 20 |eak;... | case | |00003450| 27 53 27 3a 0d 09 20 20 | 20 20 20 20 6c 61 73 74 |'S':.. | last| |00003460| 73 74 61 72 74 20 3d 20 | 62 3b 0d 09 20 20 20 20 |start = |b;.. | |00003470| 20 20 50 41 54 50 55 53 | 48 20 28 6e 6f 74 73 79 | PATPUS|H (notsy| |00003480| 6e 74 61 78 73 70 65 63 | 29 3b 0d 09 20 20 20 20 |ntaxspec|);.. | |00003490| 20 20 50 41 54 46 45 54 | 43 48 20 28 63 29 3b 0d | PATFET|CH (c);.| |000034a0| 09 20 20 20 20 20 20 50 | 41 54 50 55 53 48 20 28 |. P|ATPUSH (| |000034b0| 73 79 6e 74 61 78 5f 73 | 70 65 63 5f 63 6f 64 65 |syntax_s|pec_code| |000034c0| 5b 63 5d 29 3b 0d 09 20 | 20 20 20 20 20 62 72 65 |[c]);.. | bre| |000034d0| 61 6b 3b 0d 23 65 6e 64 | 69 66 20 2f 2a 20 65 6d |ak;.#end|if /* em| |000034e0| 61 63 73 20 2a 2f 0d 0d | 09 20 20 20 20 63 61 73 |acs */..|. cas| |000034f0| 65 20 27 77 27 3a 0d 09 | 20 20 20 20 20 20 6c 61 |e 'w':..| la| |00003500| 73 74 73 74 61 72 74 20 | 3d 20 62 3b 0d 09 20 20 |ststart |= b;.. | |00003510| 20 20 20 20 50 41 54 50 | 55 53 48 20 28 77 6f 72 | PATP|USH (wor| |00003520| 64 63 68 61 72 29 3b 0d | 09 20 20 20 20 20 20 62 |dchar);.|. b| |00003530| 72 65 61 6b 3b 0d 0d 09 | 20 20 20 20 63 61 73 65 |reak;...| case| |00003540| 20 27 57 27 3a 0d 09 20 | 20 20 20 20 20 6c 61 73 | 'W':.. | las| |00003550| 74 73 74 61 72 74 20 3d | 20 62 3b 0d 09 20 20 20 |tstart =| b;.. | |00003560| 20 20 20 50 41 54 50 55 | 53 48 20 28 6e 6f 74 77 | PATPU|SH (notw| |00003570| 6f 72 64 63 68 61 72 29 | 3b 0d 09 20 20 20 20 20 |ordchar)|;.. | |00003580| 20 62 72 65 61 6b 3b 0d | 0d 09 20 20 20 20 63 61 | break;.|.. ca| |00003590| 73 65 20 27 3c 27 3a 0d | 09 20 20 20 20 20 20 50 |se '<':.|. P| |000035a0| 41 54 50 55 53 48 20 28 | 77 6f 72 64 62 65 67 29 |ATPUSH (|wordbeg)| |000035b0| 3b 0d 09 20 20 20 20 20 | 20 62 72 65 61 6b 3b 0d |;.. | break;.| |000035c0| 0d 09 20 20 20 20 63 61 | 73 65 20 27 3e 27 3a 0d |.. ca|se '>':.| |000035d0| 09 20 20 20 20 20 20 50 | 41 54 50 55 53 48 20 28 |. P|ATPUSH (| |000035e0| 77 6f 72 64 65 6e 64 29 | 3b 0d 09 20 20 20 20 20 |wordend)|;.. | |000035f0| 20 62 72 65 61 6b 3b 0d | 0d 09 20 20 20 20 63 61 | break;.|.. ca| |00003600| 73 65 20 27 62 27 3a 0d | 09 20 20 20 20 20 20 50 |se 'b':.|. P| |00003610| 41 54 50 55 53 48 20 28 | 77 6f 72 64 62 6f 75 6e |ATPUSH (|wordboun| |00003620| 64 29 3b 0d 09 20 20 20 | 20 20 20 62 72 65 61 6b |d);.. | break| |00003630| 3b 0d 0d 09 20 20 20 20 | 63 61 73 65 20 27 42 27 |;... |case 'B'| |00003640| 3a 0d 09 20 20 20 20 20 | 20 50 41 54 50 55 53 48 |:.. | PATPUSH| |00003650| 20 28 6e 6f 74 77 6f 72 | 64 62 6f 75 6e 64 29 3b | (notwor|dbound);| |00003660| 0d 09 20 20 20 20 20 20 | 62 72 65 61 6b 3b 0d 0d |.. |break;..| |00003670| 09 20 20 20 20 63 61 73 | 65 20 27 60 27 3a 0d 09 |. cas|e '`':..| |00003680| 20 20 20 20 20 20 50 41 | 54 50 55 53 48 20 28 62 | PA|TPUSH (b| |00003690| 65 67 62 75 66 29 3b 0d | 09 20 20 20 20 20 20 62 |egbuf);.|. b| |000036a0| 72 65 61 6b 3b 0d 0d 09 | 20 20 20 20 63 61 73 65 |reak;...| case| |000036b0| 20 27 5c 27 27 3a 0d 09 | 20 20 20 20 20 20 50 41 | '\'':..| PA| |000036c0| 54 50 55 53 48 20 28 65 | 6e 64 62 75 66 29 3b 0d |TPUSH (e|ndbuf);.| |000036d0| 09 20 20 20 20 20 20 62 | 72 65 61 6b 3b 0d 0d 09 |. b|reak;...| |000036e0| 20 20 20 20 63 61 73 65 | 20 27 31 27 3a 0d 09 20 | case| '1':.. | |000036f0| 20 20 20 63 61 73 65 20 | 27 32 27 3a 0d 09 20 20 | case |'2':.. | |00003700| 20 20 63 61 73 65 20 27 | 33 27 3a 0d 09 20 20 20 | case '|3':.. | |00003710| 20 63 61 73 65 20 27 34 | 27 3a 0d 09 20 20 20 20 | case '4|':.. | |00003720| 63 61 73 65 20 27 35 27 | 3a 0d 09 20 20 20 20 63 |case '5'|:.. c| |00003730| 61 73 65 20 27 36 27 3a | 0d 09 20 20 20 20 63 61 |ase '6':|.. ca| |00003740| 73 65 20 27 37 27 3a 0d | 09 20 20 20 20 63 61 73 |se '7':.|. cas| |00003750| 65 20 27 38 27 3a 0d 09 | 20 20 20 20 63 61 73 65 |e '8':..| case| |00003760| 20 27 39 27 3a 0d 09 20 | 20 20 20 20 20 63 31 20 | '9':.. | c1 | |00003770| 3d 20 63 20 2d 20 27 30 | 27 3b 0d 09 20 20 20 20 |= c - '0|';.. | |00003780| 20 20 69 66 20 28 63 31 | 20 3e 3d 20 72 65 67 6e | if (c1| >= regn| |00003790| 75 6d 29 0d 09 09 67 6f | 74 6f 20 6e 6f 72 6d 61 |um)...go|to norma| |000037a0| 6c 5f 63 68 61 72 3b 0d | 09 20 20 20 20 20 20 66 |l_char;.|. f| |000037b0| 6f 72 20 28 73 74 61 63 | 6b 74 20 3d 20 73 74 61 |or (stac|kt = sta| |000037c0| 63 6b 70 20 2d 20 32 3b | 20 20 73 74 61 63 6b 74 |ckp - 2;| stackt| |000037d0| 20 3e 20 73 74 61 63 6b | 62 3b 20 20 73 74 61 63 | > stack|b; stac| |000037e0| 6b 74 20 2d 3d 20 34 29 | 0d 20 09 09 69 66 20 28 |kt -= 4)|. ..if (| |000037f0| 2a 73 74 61 63 6b 74 20 | 3d 3d 20 63 31 29 0d 09 |*stackt |== c1)..| |00003800| 09 20 20 67 6f 74 6f 20 | 6e 6f 72 6d 61 6c 5f 63 |. goto |normal_c| |00003810| 68 61 72 3b 0d 09 20 20 | 20 20 20 20 6c 61 73 74 |har;.. | last| |00003820| 73 74 61 72 74 20 3d 20 | 62 3b 0d 09 20 20 20 20 |start = |b;.. | |00003830| 20 20 50 41 54 50 55 53 | 48 20 28 64 75 70 6c 69 | PATPUS|H (dupli| |00003840| 63 61 74 65 29 3b 0d 09 | 20 20 20 20 20 20 50 41 |cate);..| PA| |00003850| 54 50 55 53 48 20 28 63 | 31 29 3b 0d 09 20 20 20 |TPUSH (c|1);.. | |00003860| 20 20 20 62 72 65 61 6b | 3b 0d 0d 09 20 20 20 20 | break|;... | |00003870| 63 61 73 65 20 27 2b 27 | 3a 0d 09 20 20 20 20 63 |case '+'|:.. c| |00003880| 61 73 65 20 27 3f 27 3a | 0d 09 20 20 20 20 20 20 |ase '?':|.. | |00003890| 69 66 20 28 6f 62 73 63 | 75 72 65 5f 73 79 6e 74 |if (obsc|ure_synt| |000038a0| 61 78 20 26 20 52 45 5f | 42 4b 5f 50 4c 55 53 5f |ax & RE_|BK_PLUS_| |000038b0| 51 4d 29 0d 09 09 67 6f | 74 6f 20 68 61 6e 64 6c |QM)...go|to handl| |000038c0| 65 5f 70 6c 75 73 3b 0d | 0d 09 20 20 20 20 64 65 |e_plus;.|.. de| |000038d0| 66 61 75 6c 74 3a 0d 09 | 20 20 20 20 6e 6f 72 6d |fault:..| norm| |000038e0| 61 6c 5f 62 61 63 6b 73 | 6c 3a 0d 09 20 20 20 20 |al_backs|l:.. | |000038f0| 20 20 2f 2a 20 59 6f 75 | 20 6d 69 67 68 74 20 74 | /* You| might t| |00003900| 68 69 6e 6b 20 69 74 20 | 77 6f 75 6c 64 20 62 65 |hink it |would be| |00003910| 20 75 73 65 66 75 6c 20 | 66 6f 72 20 5c 20 74 6f | useful |for \ to| |00003920| 20 6d 65 61 6e 0d 09 09 | 20 6e 6f 74 20 74 6f 20 | mean...| not to | |00003930| 74 72 61 6e 73 6c 61 74 | 65 3b 20 62 75 74 20 69 |translat|e; but i| |00003940| 66 20 77 65 20 64 6f 6e | 27 74 20 74 72 61 6e 73 |f we don|'t trans| |00003950| 6c 61 74 65 20 69 74 0d | 09 09 20 69 74 20 77 69 |late it.|.. it wi| |00003960| 6c 6c 20 6e 65 76 65 72 | 20 6d 61 74 63 68 20 61 |ll never| match a| |00003970| 6e 79 74 68 69 6e 67 2e | 20 20 2a 2f 0d 09 20 20 |nything.| */.. | |00003980| 20 20 20 20 69 66 20 28 | 74 72 61 6e 73 6c 61 74 | if (|translat| |00003990| 65 29 20 63 20 3d 20 74 | 72 61 6e 73 6c 61 74 65 |e) c = t|ranslate| |000039a0| 5b 63 5d 3b 0d 09 20 20 | 20 20 20 20 67 6f 74 6f |[c];.. | goto| |000039b0| 20 6e 6f 72 6d 61 6c 5f | 63 68 61 72 3b 0d 09 20 | normal_|char;.. | |000039c0| 20 20 20 7d 0d 09 20 20 | 62 72 65 61 6b 3b 0d 0d | }.. |break;..| |000039d0| 09 64 65 66 61 75 6c 74 | 3a 0d 09 6e 6f 72 6d 61 |.default|:..norma| |000039e0| 6c 5f 63 68 61 72 3a 0d | 09 20 20 69 66 20 28 21 |l_char:.|. if (!| |000039f0| 70 65 6e 64 69 6e 67 5f | 65 78 61 63 74 20 7c 7c |pending_|exact ||| |00003a00| 20 70 65 6e 64 69 6e 67 | 5f 65 78 61 63 74 20 2b | pending|_exact +| |00003a10| 20 2a 70 65 6e 64 69 6e | 67 5f 65 78 61 63 74 20 | *pendin|g_exact | |00003a20| 2b 20 31 20 21 3d 20 62 | 0d 09 20 20 20 20 20 20 |+ 1 != b|.. | |00003a30| 7c 7c 20 2a 70 65 6e 64 | 69 6e 67 5f 65 78 61 63 ||| *pend|ing_exac| |00003a40| 74 20 3d 3d 20 30 31 37 | 37 20 7c 7c 20 2a 70 20 |t == 017|7 || *p | |00003a50| 3d 3d 20 27 2a 27 20 7c | 7c 20 2a 70 20 3d 3d 20 |== '*' ||| *p == | |00003a60| 27 5e 27 0d 09 20 20 20 | 20 20 20 7c 7c 20 28 28 |'^'.. | || ((| |00003a70| 6f 62 73 63 75 72 65 5f | 73 79 6e 74 61 78 20 26 |obscure_|syntax &| |00003a80| 20 52 45 5f 42 4b 5f 50 | 4c 55 53 5f 51 4d 29 0d | RE_BK_P|LUS_QM).| |00003a90| 09 09 20 20 3f 20 2a 70 | 20 3d 3d 20 27 5c 5c 27 |.. ? *p| == '\\'| |00003aa0| 20 26 26 20 28 70 5b 31 | 5d 20 3d 3d 20 27 2b 27 | && (p[1|] == '+'| |00003ab0| 20 7c 7c 20 70 5b 31 5d | 20 3d 3d 20 27 3f 27 29 | || p[1]| == '?')| |00003ac0| 0d 09 09 20 20 3a 20 28 | 2a 70 20 3d 3d 20 27 2b |... : (|*p == '+| |00003ad0| 27 20 7c 7c 20 2a 70 20 | 3d 3d 20 27 3f 27 29 29 |' || *p |== '?'))| |00003ae0| 29 0d 09 20 20 20 20 7b | 0d 09 20 20 20 20 20 20 |).. {|.. | |00003af0| 6c 61 73 74 73 74 61 72 | 74 20 3d 20 62 3b 0d 09 |laststar|t = b;..| |00003b00| 20 20 20 20 20 20 50 41 | 54 50 55 53 48 20 28 65 | PA|TPUSH (e| |00003b10| 78 61 63 74 6e 29 3b 0d | 09 20 20 20 20 20 20 70 |xactn);.|. p| |00003b20| 65 6e 64 69 6e 67 5f 65 | 78 61 63 74 20 3d 20 62 |ending_e|xact = b| |00003b30| 3b 0d 09 20 20 20 20 20 | 20 50 41 54 50 55 53 48 |;.. | PATPUSH| |00003b40| 20 28 30 29 3b 0d 09 20 | 20 20 20 7d 0d 09 20 20 | (0);.. | }.. | |00003b50| 50 41 54 50 55 53 48 20 | 28 63 29 3b 0d 09 20 20 |PATPUSH |(c);.. | |00003b60| 28 2a 70 65 6e 64 69 6e | 67 5f 65 78 61 63 74 29 |(*pendin|g_exact)| |00003b70| 2b 2b 3b 0d 09 7d 0d 20 | 20 20 20 7d 0d 0d 20 20 |++;..}. | }.. | |00003b80| 69 66 20 28 66 69 78 75 | 70 5f 6a 75 6d 70 29 0d |if (fixu|p_jump).| |00003b90| 20 20 20 20 73 74 6f 72 | 65 5f 6a 75 6d 70 20 28 | stor|e_jump (| |00003ba0| 66 69 78 75 70 5f 6a 75 | 6d 70 2c 20 6a 75 6d 70 |fixup_ju|mp, jump| |00003bb0| 2c 20 62 29 3b 0d 0d 20 | 20 69 66 20 28 73 74 61 |, b);.. | if (sta| |00003bc0| 63 6b 70 20 21 3d 20 73 | 74 61 63 6b 62 29 20 67 |ckp != s|tackb) g| |00003bd0| 6f 74 6f 20 75 6e 6d 61 | 74 63 68 65 64 5f 6f 70 |oto unma|tched_op| |00003be0| 65 6e 3b 0d 0d 20 20 62 | 75 66 70 2d 3e 75 73 65 |en;.. b|ufp->use| |00003bf0| 64 20 3d 20 62 20 2d 20 | 62 75 66 70 2d 3e 62 75 |d = b - |bufp->bu| |00003c00| 66 66 65 72 3b 0d 20 20 | 72 65 74 75 72 6e 20 30 |ffer;. |return 0| |00003c10| 3b 0d 0d 20 69 6e 76 61 | 6c 69 64 5f 70 61 74 74 |;.. inva|lid_patt| |00003c20| 65 72 6e 3a 0d 20 20 72 | 65 74 75 72 6e 20 22 49 |ern:. r|eturn "I| |00003c30| 6e 76 61 6c 69 64 20 72 | 65 67 75 6c 61 72 20 65 |nvalid r|egular e| |00003c40| 78 70 72 65 73 73 69 6f | 6e 22 3b 0d 0d 20 75 6e |xpressio|n";.. un| |00003c50| 6d 61 74 63 68 65 64 5f | 6f 70 65 6e 3a 0d 20 20 |matched_|open:. | |00003c60| 72 65 74 75 72 6e 20 22 | 55 6e 6d 61 74 63 68 65 |return "|Unmatche| |00003c70| 64 20 5c 5c 28 22 3b 0d | 0d 20 75 6e 6d 61 74 63 |d \\(";.|. unmatc| |00003c80| 68 65 64 5f 63 6c 6f 73 | 65 3a 0d 20 20 72 65 74 |hed_clos|e:. ret| |00003c90| 75 72 6e 20 22 55 6e 6d | 61 74 63 68 65 64 20 5c |urn "Unm|atched \| |00003ca0| 5c 29 22 3b 0d 0d 20 65 | 6e 64 5f 6f 66 5f 70 61 |\)";.. e|nd_of_pa| |00003cb0| 74 74 65 72 6e 3a 0d 20 | 20 72 65 74 75 72 6e 20 |ttern:. | return | |00003cc0| 22 50 72 65 6d 61 74 75 | 72 65 20 65 6e 64 20 6f |"Prematu|re end o| |00003cd0| 66 20 72 65 67 75 6c 61 | 72 20 65 78 70 72 65 73 |f regula|r expres| |00003ce0| 73 69 6f 6e 22 3b 0d 0d | 20 6e 65 73 74 69 6e 67 |sion";..| nesting| |00003cf0| 5f 74 6f 6f 5f 64 65 65 | 70 3a 0d 20 20 72 65 74 |_too_dee|p:. ret| |00003d00| 75 72 6e 20 22 4e 65 73 | 74 69 6e 67 20 74 6f 6f |urn "Nes|ting too| |00003d10| 20 64 65 65 70 22 3b 0d | 0d 20 74 6f 6f 5f 62 69 | deep";.|. too_bi| |00003d20| 67 3a 0d 20 20 72 65 74 | 75 72 6e 20 22 52 65 67 |g:. ret|urn "Reg| |00003d30| 75 6c 61 72 20 65 78 70 | 72 65 73 73 69 6f 6e 20 |ular exp|ression | |00003d40| 74 6f 6f 20 62 69 67 22 | 3b 0d 0d 20 6d 65 6d 6f |too big"|;.. memo| |00003d50| 72 79 5f 65 78 68 61 75 | 73 74 65 64 3a 0d 20 20 |ry_exhau|sted:. | |00003d60| 72 65 74 75 72 6e 20 22 | 4d 65 6d 6f 72 79 20 65 |return "|Memory e| |00003d70| 78 68 61 75 73 74 65 64 | 22 3b 0d 7d 0d 0d 2f 2a |xhausted|";.}../*| |00003d80| 20 53 74 6f 72 65 20 77 | 68 65 72 65 20 60 66 72 | Store w|here `fr| |00003d90| 6f 6d 27 20 70 6f 69 6e | 74 73 20 61 20 6a 75 6d |om' poin|ts a jum| |00003da0| 70 20 6f 70 65 72 61 74 | 69 6f 6e 20 74 6f 20 6a |p operat|ion to j| |00003db0| 75 6d 70 20 74 6f 20 77 | 68 65 72 65 20 60 74 6f |ump to w|here `to| |00003dc0| 27 20 70 6f 69 6e 74 73 | 2e 0d 20 20 60 6f 70 63 |' points|.. `opc| |00003dd0| 6f 64 65 27 20 69 73 20 | 74 68 65 20 6f 70 63 6f |ode' is |the opco| |00003de0| 64 65 20 74 6f 20 73 74 | 6f 72 65 2e 20 2a 2f 0d |de to st|ore. */.| |00003df0| 0d 73 74 61 74 69 63 20 | 69 6e 74 0d 73 74 6f 72 |.static |int.stor| |00003e00| 65 5f 6a 75 6d 70 20 28 | 66 72 6f 6d 2c 20 6f 70 |e_jump (|from, op| |00003e10| 63 6f 64 65 2c 20 74 6f | 29 0d 20 20 20 20 20 63 |code, to|). c| |00003e20| 68 61 72 20 2a 66 72 6f | 6d 2c 20 2a 74 6f 3b 0d |har *fro|m, *to;.| |00003e30| 20 20 20 20 20 63 68 61 | 72 20 6f 70 63 6f 64 65 | cha|r opcode| |00003e40| 3b 0d 7b 0d 20 20 66 72 | 6f 6d 5b 30 5d 20 3d 20 |;.{. fr|om[0] = | |00003e50| 6f 70 63 6f 64 65 3b 0d | 20 20 66 72 6f 6d 5b 31 |opcode;.| from[1| |00003e60| 5d 20 3d 20 28 74 6f 20 | 2d 20 28 66 72 6f 6d 20 |] = (to |- (from | |00003e70| 2b 20 33 29 29 20 26 20 | 30 33 37 37 3b 0d 20 20 |+ 3)) & |0377;. | |00003e80| 66 72 6f 6d 5b 32 5d 20 | 3d 20 28 74 6f 20 2d 20 |from[2] |= (to - | |00003e90| 28 66 72 6f 6d 20 2b 20 | 33 29 29 20 3e 3e 20 38 |(from + |3)) >> 8| |00003ea0| 3b 0d 7d 0d 0d 2f 2a 20 | 4f 70 65 6e 20 75 70 20 |;.}../* |Open up | |00003eb0| 73 70 61 63 65 20 61 74 | 20 63 68 61 72 20 46 52 |space at| char FR| |00003ec0| 4f 4d 2c 20 61 6e 64 20 | 69 6e 73 65 72 74 20 74 |OM, and |insert t| |00003ed0| 68 65 72 65 20 61 20 6a | 75 6d 70 20 74 6f 20 54 |here a j|ump to T| |00003ee0| 4f 2e 0d 20 20 20 43 55 | 52 52 45 4e 54 5f 45 4e |O.. CU|RRENT_EN| |00003ef0| 44 20 67 69 76 65 73 20 | 74 65 20 65 6e 64 20 6f |D gives |te end o| |00003f00| 66 20 74 68 65 20 73 74 | 6f 72 61 67 65 20 6e 6f |f the st|orage no| |00003f10| 20 69 6e 20 75 73 65 2c | 0d 20 20 20 73 6f 20 77 | in use,|. so w| |00003f20| 65 20 6b 6e 6f 77 20 68 | 6f 77 20 6d 75 63 68 20 |e know h|ow much | |00003f30| 64 61 74 61 20 74 6f 20 | 63 6f 70 79 20 75 70 2e |data to |copy up.| |00003f40| 0d 20 20 20 4f 50 20 69 | 73 20 74 68 65 20 6f 70 |. OP i|s the op| |00003f50| 63 6f 64 65 20 6f 66 20 | 74 68 65 20 6a 75 6d 70 |code of |the jump| |00003f60| 20 74 6f 20 69 6e 73 65 | 72 74 2e 0d 0d 20 20 20 | to inse|rt... | |00003f70| 49 66 20 79 6f 75 20 63 | 61 6c 6c 20 74 68 69 73 |If you c|all this| |00003f80| 20 66 75 6e 63 74 69 6f | 6e 2c 20 79 6f 75 20 6d | functio|n, you m| |00003f90| 75 73 74 20 7a 65 72 6f | 20 6f 75 74 20 70 65 6e |ust zero| out pen| |00003fa0| 64 69 6e 67 5f 65 78 61 | 63 74 2e 20 20 2a 2f 0d |ding_exa|ct. */.| |00003fb0| 0d 73 74 61 74 69 63 20 | 69 6e 74 0d 69 6e 73 65 |.static |int.inse| |00003fc0| 72 74 5f 6a 75 6d 70 20 | 28 6f 70 2c 20 66 72 6f |rt_jump |(op, fro| |00003fd0| 6d 2c 20 74 6f 2c 20 63 | 75 72 72 65 6e 74 5f 65 |m, to, c|urrent_e| |00003fe0| 6e 64 29 0d 20 20 20 20 | 20 63 68 61 72 20 6f 70 |nd). | char op| |00003ff0| 3b 0d 20 20 20 20 20 63 | 68 61 72 20 2a 66 72 6f |;. c|har *fro| |00004000| 6d 2c 20 2a 74 6f 2c 20 | 2a 63 75 72 72 65 6e 74 |m, *to, |*current| |00004010| 5f 65 6e 64 3b 0d 7b 0d | 20 20 72 65 67 69 73 74 |_end;.{.| regist| |00004020| 65 72 20 63 68 61 72 20 | 2a 70 74 6f 20 3d 20 63 |er char |*pto = c| |00004030| 75 72 72 65 6e 74 5f 65 | 6e 64 20 2b 20 33 3b 0d |urrent_e|nd + 3;.| |00004040| 20 20 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 | regist|er char | |00004050| 2a 70 66 72 6f 6d 20 3d | 20 63 75 72 72 65 6e 74 |*pfrom =| current| |00004060| 5f 65 6e 64 3b 0d 20 20 | 77 68 69 6c 65 20 28 70 |_end;. |while (p| |00004070| 66 72 6f 6d 20 21 3d 20 | 66 72 6f 6d 29 0d 20 20 |from != |from). | |00004080| 20 20 2a 2d 2d 70 74 6f | 20 3d 20 2a 2d 2d 70 66 | *--pto| = *--pf| |00004090| 72 6f 6d 3b 0d 20 20 73 | 74 6f 72 65 5f 6a 75 6d |rom;. s|tore_jum| |000040a0| 70 20 28 66 72 6f 6d 2c | 20 6f 70 2c 20 74 6f 29 |p (from,| op, to)| |000040b0| 3b 0d 7d 0d 0c 0d 2f 2a | 20 47 69 76 65 6e 20 61 |;.}.../*| Given a| |000040c0| 20 70 61 74 74 65 72 6e | 2c 20 63 6f 6d 70 75 74 | pattern|, comput| |000040d0| 65 20 61 20 66 61 73 74 | 6d 61 70 20 66 72 6f 6d |e a fast|map from| |000040e0| 20 69 74 2e 0d 20 54 68 | 65 20 66 61 73 74 6d 61 | it.. Th|e fastma| |000040f0| 70 20 72 65 63 6f 72 64 | 73 20 77 68 69 63 68 20 |p record|s which | |00004100| 6f 66 20 74 68 65 20 28 | 31 20 3c 3c 20 42 59 54 |of the (|1 << BYT| |00004110| 45 57 49 44 54 48 29 20 | 70 6f 73 73 69 62 6c 65 |EWIDTH) |possible| |00004120| 20 63 68 61 72 61 63 74 | 65 72 73 0d 20 63 61 6e | charact|ers. can| |00004130| 20 73 74 61 72 74 20 61 | 20 73 74 72 69 6e 67 20 | start a| string | |00004140| 74 68 61 74 20 6d 61 74 | 63 68 65 73 20 74 68 65 |that mat|ches the| |00004150| 20 70 61 74 74 65 72 6e | 2e 0d 20 54 68 69 73 20 | pattern|.. This | |00004160| 66 61 73 74 6d 61 70 20 | 69 73 20 75 73 65 64 20 |fastmap |is used | |00004170| 62 79 20 72 65 5f 73 65 | 61 72 63 68 20 74 6f 20 |by re_se|arch to | |00004180| 73 6b 69 70 20 71 75 69 | 63 6b 6c 79 20 6f 76 65 |skip qui|ckly ove| |00004190| 72 20 74 6f 74 61 6c 6c | 79 20 69 6d 70 6c 61 75 |r totall|y implau| |000041a0| 73 69 62 6c 65 20 74 65 | 78 74 2e 0d 0d 20 54 68 |sible te|xt... Th| |000041b0| 65 20 63 61 6c 6c 65 72 | 20 6d 75 73 74 20 73 75 |e caller| must su| |000041c0| 70 70 6c 79 20 74 68 65 | 20 61 64 64 72 65 73 73 |pply the| address| |000041d0| 20 6f 66 20 61 20 28 31 | 20 3c 3c 20 42 59 54 45 | of a (1| << BYTE| |000041e0| 57 49 44 54 48 29 2d 62 | 79 74 65 20 64 61 74 61 |WIDTH)-b|yte data| |000041f0| 20 61 72 65 61 0d 20 61 | 73 20 62 75 66 70 2d 3e | area. a|s bufp->| |00004200| 66 61 73 74 6d 61 70 2e | 0d 20 54 68 65 20 6f 74 |fastmap.|. The ot| |00004210| 68 65 72 20 63 6f 6d 70 | 6f 6e 65 6e 74 73 20 6f |her comp|onents o| |00004220| 66 20 62 75 66 70 20 64 | 65 73 63 72 69 62 65 20 |f bufp d|escribe | |00004230| 74 68 65 20 70 61 74 74 | 65 72 6e 20 74 6f 20 62 |the patt|ern to b| |00004240| 65 20 75 73 65 64 2e 20 | 20 2a 2f 0d 0d 76 6f 69 |e used. | */..voi| |00004250| 64 0d 72 65 5f 63 6f 6d | 70 69 6c 65 5f 66 61 73 |d.re_com|pile_fas| |00004260| 74 6d 61 70 20 28 62 75 | 66 70 29 0d 20 20 20 20 |tmap (bu|fp). | |00004270| 20 73 74 72 75 63 74 20 | 72 65 5f 70 61 74 74 65 | struct |re_patte| |00004280| 72 6e 5f 62 75 66 66 65 | 72 20 2a 62 75 66 70 3b |rn_buffe|r *bufp;| |00004290| 0d 7b 0d 20 20 75 6e 73 | 69 67 6e 65 64 20 63 68 |.{. uns|igned ch| |000042a0| 61 72 20 2a 70 61 74 74 | 65 72 6e 20 3d 20 28 75 |ar *patt|ern = (u| |000042b0| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 2a 29 20 |nsigned |char *) | |000042c0| 62 75 66 70 2d 3e 62 75 | 66 66 65 72 3b 0d 20 20 |bufp->bu|ffer;. | |000042d0| 69 6e 74 20 73 69 7a 65 | 20 3d 20 62 75 66 70 2d |int size| = bufp-| |000042e0| 3e 75 73 65 64 3b 0d 20 | 20 72 65 67 69 73 74 65 |>used;. | registe| |000042f0| 72 20 63 68 61 72 20 2a | 66 61 73 74 6d 61 70 20 |r char *|fastmap | |00004300| 3d 20 62 75 66 70 2d 3e | 66 61 73 74 6d 61 70 3b |= bufp->|fastmap;| |00004310| 0d 20 20 72 65 67 69 73 | 74 65 72 20 75 6e 73 69 |. regis|ter unsi| |00004320| 67 6e 65 64 20 63 68 61 | 72 20 2a 70 20 3d 20 70 |gned cha|r *p = p| |00004330| 61 74 74 65 72 6e 3b 0d | 20 20 72 65 67 69 73 74 |attern;.| regist| |00004340| 65 72 20 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 |er unsig|ned char| |00004350| 20 2a 70 65 6e 64 20 3d | 20 70 61 74 74 65 72 6e | *pend =| pattern| |00004360| 20 2b 20 73 69 7a 65 3b | 0d 20 20 72 65 67 69 73 | + size;|. regis| |00004370| 74 65 72 20 69 6e 74 20 | 6a 2c 20 6b 3b 0d 20 20 |ter int |j, k;. | |00004380| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 2a 74 |unsigned| char *t| |00004390| 72 61 6e 73 6c 61 74 65 | 20 3d 20 28 75 6e 73 69 |ranslate| = (unsi| |000043a0| 67 6e 65 64 20 63 68 61 | 72 20 2a 29 20 62 75 66 |gned cha|r *) buf| |000043b0| 70 2d 3e 74 72 61 6e 73 | 6c 61 74 65 3b 0d 0d 20 |p->trans|late;.. | |000043c0| 20 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 2a | unsigne|d char *| |000043d0| 73 74 61 63 6b 62 5b 4e | 46 41 49 4c 55 52 45 53 |stackb[N|FAILURES| |000043e0| 5d 3b 0d 20 20 75 6e 73 | 69 67 6e 65 64 20 63 68 |];. uns|igned ch| |000043f0| 61 72 20 2a 2a 73 74 61 | 63 6b 70 20 3d 20 73 74 |ar **sta|ckp = st| |00004400| 61 63 6b 62 3b 0d 0d 20 | 20 62 7a 65 72 6f 20 28 |ackb;.. | bzero (| |00004410| 66 61 73 74 6d 61 70 2c | 20 28 31 20 3c 3c 20 42 |fastmap,| (1 << B| |00004420| 59 54 45 57 49 44 54 48 | 29 29 3b 0d 20 20 62 75 |YTEWIDTH|));. bu| |00004430| 66 70 2d 3e 66 61 73 74 | 6d 61 70 5f 61 63 63 75 |fp->fast|map_accu| |00004440| 72 61 74 65 20 3d 20 31 | 3b 0d 20 20 62 75 66 70 |rate = 1|;. bufp| |00004450| 2d 3e 63 61 6e 5f 62 65 | 5f 6e 75 6c 6c 20 3d 20 |->can_be|_null = | |00004460| 30 3b 0d 20 20 20 20 20 | 20 0d 20 20 77 68 69 6c |0;. | . whil| |00004470| 65 20 28 70 29 0d 20 20 | 20 20 7b 0d 20 20 20 20 |e (p). | {. | |00004480| 20 20 69 66 20 28 70 20 | 3d 3d 20 70 65 6e 64 29 | if (p |== pend)| |00004490| 0d 09 7b 0d 09 20 20 62 | 75 66 70 2d 3e 63 61 6e |..{.. b|ufp->can| |000044a0| 5f 62 65 5f 6e 75 6c 6c | 20 3d 20 31 3b 0d 09 20 |_be_null| = 1;.. | |000044b0| 20 62 72 65 61 6b 3b 0d | 09 7d 0d 23 69 66 64 65 | break;.|.}.#ifde| |000044c0| 66 20 53 57 49 54 43 48 | 5f 45 4e 55 4d 5f 42 55 |f SWITCH|_ENUM_BU| |000044d0| 47 0d 20 20 20 20 20 20 | 73 77 69 74 63 68 20 28 |G. |switch (| |000044e0| 28 69 6e 74 29 20 28 28 | 65 6e 75 6d 20 72 65 67 |(int) ((|enum reg| |000044f0| 65 78 70 63 6f 64 65 29 | 20 2a 70 2b 2b 29 29 0d |expcode)| *p++)).| |00004500| 23 65 6c 73 65 0d 20 20 | 20 20 20 20 73 77 69 74 |#else. | swit| |00004510| 63 68 20 28 28 65 6e 75 | 6d 20 72 65 67 65 78 70 |ch ((enu|m regexp| |00004520| 63 6f 64 65 29 20 2a 70 | 2b 2b 29 0d 23 65 6e 64 |code) *p|++).#end| |00004530| 69 66 0d 09 7b 0d 09 63 | 61 73 65 20 65 78 61 63 |if..{..c|ase exac| |00004540| 74 6e 3a 0d 09 20 20 69 | 66 20 28 74 72 61 6e 73 |tn:.. i|f (trans| |00004550| 6c 61 74 65 29 0d 09 20 | 20 20 20 66 61 73 74 6d |late).. | fastm| |00004560| 61 70 5b 74 72 61 6e 73 | 6c 61 74 65 5b 70 5b 31 |ap[trans|late[p[1| |00004570| 5d 5d 5d 20 3d 20 31 3b | 0d 09 20 20 65 6c 73 65 |]]] = 1;|.. else| |00004580| 0d 09 20 20 20 20 66 61 | 73 74 6d 61 70 5b 70 5b |.. fa|stmap[p[| |00004590| 31 5d 5d 20 3d 20 31 3b | 0d 09 20 20 62 72 65 61 |1]] = 1;|.. brea| |000045a0| 6b 3b 0d 0d 20 20 20 20 | 20 20 20 20 63 61 73 65 |k;.. | case| |000045b0| 20 62 65 67 6c 69 6e 65 | 3a 0d 20 20 20 20 20 20 | begline|:. | |000045c0| 20 20 63 61 73 65 20 62 | 65 66 6f 72 65 5f 64 6f | case b|efore_do| |000045d0| 74 3a 0d 09 63 61 73 65 | 20 61 74 5f 64 6f 74 3a |t:..case| at_dot:| |000045e0| 0d 09 63 61 73 65 20 61 | 66 74 65 72 5f 64 6f 74 |..case a|fter_dot| |000045f0| 3a 0d 09 63 61 73 65 20 | 62 65 67 62 75 66 3a 0d |:..case |begbuf:.| |00004600| 09 63 61 73 65 20 65 6e | 64 62 75 66 3a 0d 09 63 |.case en|dbuf:..c| |00004610| 61 73 65 20 77 6f 72 64 | 62 6f 75 6e 64 3a 0d 09 |ase word|bound:..| |00004620| 63 61 73 65 20 6e 6f 74 | 77 6f 72 64 62 6f 75 6e |case not|wordboun| |00004630| 64 3a 0d 09 63 61 73 65 | 20 77 6f 72 64 62 65 67 |d:..case| wordbeg| |00004640| 3a 0d 09 63 61 73 65 20 | 77 6f 72 64 65 6e 64 3a |:..case |wordend:| |00004650| 0d 09 20 20 63 6f 6e 74 | 69 6e 75 65 3b 0d 0d 09 |.. cont|inue;...| |00004660| 63 61 73 65 20 65 6e 64 | 6c 69 6e 65 3a 0d 09 20 |case end|line:.. | |00004670| 20 69 66 20 28 74 72 61 | 6e 73 6c 61 74 65 29 0d | if (tra|nslate).| |00004680| 09 20 20 20 20 66 61 73 | 74 6d 61 70 5b 74 72 61 |. fas|tmap[tra| |00004690| 6e 73 6c 61 74 65 5b 27 | 5c 72 27 5d 5d 20 3d 20 |nslate['|\r']] = | |000046a0| 31 3b 20 20 2f 2a 20 6e | 65 77 6c 69 6e 65 20 63 |1; /* n|ewline c| |000046b0| 68 61 6e 67 65 64 20 2a | 2f 0d 09 20 20 65 6c 73 |hanged *|/.. els| |000046c0| 65 0d 09 20 20 20 20 66 | 61 73 74 6d 61 70 5b 27 |e.. f|astmap['| |000046d0| 5c 72 27 5d 20 3d 20 31 | 3b 20 20 2f 2a 20 6e 65 |\r'] = 1|; /* ne| |000046e0| 77 6c 69 6e 65 20 63 68 | 61 6e 67 65 64 20 2a 2f |wline ch|anged */| |000046f0| 0d 09 20 20 69 66 20 28 | 62 75 66 70 2d 3e 63 61 |.. if (|bufp->ca| |00004700| 6e 5f 62 65 5f 6e 75 6c | 6c 20 21 3d 20 31 29 0d |n_be_nul|l != 1).| |00004710| 09 20 20 20 20 62 75 66 | 70 2d 3e 63 61 6e 5f 62 |. buf|p->can_b| |00004720| 65 5f 6e 75 6c 6c 20 3d | 20 32 3b 0d 09 20 20 62 |e_null =| 2;.. b| |00004730| 72 65 61 6b 3b 0d 0d 09 | 63 61 73 65 20 66 69 6e |reak;...|case fin| |00004740| 61 6c 69 7a 65 5f 6a 75 | 6d 70 3a 0d 09 63 61 73 |alize_ju|mp:..cas| |00004750| 65 20 6d 61 79 62 65 5f | 66 69 6e 61 6c 69 7a 65 |e maybe_|finalize| |00004760| 5f 6a 75 6d 70 3a 0d 09 | 63 61 73 65 20 6a 75 6d |_jump:..|case jum| |00004770| 70 3a 0d 09 63 61 73 65 | 20 64 75 6d 6d 79 5f 66 |p:..case| dummy_f| |00004780| 61 69 6c 75 72 65 5f 6a | 75 6d 70 3a 0d 09 20 20 |ailure_j|ump:.. | |00004790| 62 75 66 70 2d 3e 63 61 | 6e 5f 62 65 5f 6e 75 6c |bufp->ca|n_be_nul| |000047a0| 6c 20 3d 20 31 3b 0d 09 | 20 20 6a 20 3d 20 2a 70 |l = 1;..| j = *p| |000047b0| 2b 2b 20 26 20 30 33 37 | 37 3b 0d 09 20 20 6a 20 |++ & 037|7;.. j | |000047c0| 2b 3d 20 53 49 47 4e 5f | 45 58 54 45 4e 44 5f 43 |+= SIGN_|EXTEND_C| |000047d0| 48 41 52 20 28 2a 28 63 | 68 61 72 20 2a 29 70 29 |HAR (*(c|har *)p)| |000047e0| 20 3c 3c 20 38 3b 0d 09 | 20 20 70 20 2b 3d 20 6a | << 8;..| p += j| |000047f0| 20 2b 20 31 3b 09 09 2f | 2a 20 54 68 65 20 31 20 | + 1;../|* The 1 | |00004800| 63 6f 6d 70 65 6e 73 61 | 74 65 73 20 66 6f 72 20 |compensa|tes for | |00004810| 6d 69 73 73 69 6e 67 20 | 2b 2b 20 61 62 6f 76 65 |missing |++ above| |00004820| 20 2a 2f 0d 09 20 20 69 | 66 20 28 6a 20 3e 20 30 | */.. i|f (j > 0| |00004830| 29 0d 09 20 20 20 20 63 | 6f 6e 74 69 6e 75 65 3b |).. c|ontinue;| |00004840| 0d 09 20 20 2f 2a 20 4a | 75 6d 70 20 62 61 63 6b |.. /* J|ump back| |00004850| 77 61 72 64 20 72 65 61 | 63 68 65 64 20 69 6d 70 |ward rea|ched imp| |00004860| 6c 69 65 73 20 77 65 20 | 6a 75 73 74 20 77 65 6e |lies we |just wen| |00004870| 74 20 74 68 72 6f 75 67 | 68 0d 09 20 20 20 20 20 |t throug|h.. | |00004880| 74 68 65 20 62 6f 64 79 | 20 6f 66 20 61 20 6c 6f |the body| of a lo| |00004890| 6f 70 20 61 6e 64 20 6d | 61 74 63 68 65 64 20 6e |op and m|atched n| |000048a0| 6f 74 68 69 6e 67 2e 0d | 09 20 20 20 20 20 4f 70 |othing..|. Op| |000048b0| 63 6f 64 65 20 6a 75 6d | 70 65 64 20 74 6f 20 73 |code jum|ped to s| |000048c0| 68 6f 75 6c 64 20 62 65 | 20 61 6e 20 6f 6e 5f 66 |hould be| an on_f| |000048d0| 61 69 6c 75 72 65 5f 6a | 75 6d 70 2e 0d 09 20 20 |ailure_j|ump... | |000048e0| 20 20 20 4a 75 73 74 20 | 74 72 65 61 74 20 69 74 | Just |treat it| |000048f0| 20 6c 69 6b 65 20 61 6e | 20 6f 72 64 69 6e 61 72 | like an| ordinar| |00004900| 79 20 6a 75 6d 70 2e 0d | 09 20 20 20 20 20 46 6f |y jump..|. Fo| |00004910| 72 20 61 20 2a 20 6c 6f | 6f 70 2c 20 69 74 20 68 |r a * lo|op, it h| |00004920| 61 73 20 70 75 73 68 65 | 64 20 69 74 73 20 66 61 |as pushe|d its fa| |00004930| 69 6c 75 72 65 20 70 6f | 69 6e 74 20 61 6c 72 65 |ilure po|int alre| |00004940| 61 64 79 3b 0d 09 20 20 | 20 20 20 69 66 20 73 6f |ady;.. | if so| |00004950| 2c 20 64 69 73 63 61 72 | 64 20 74 68 61 74 20 61 |, discar|d that a| |00004960| 73 20 72 65 64 75 6e 64 | 61 6e 74 2e 20 20 2a 2f |s redund|ant. */| |00004970| 0d 09 20 20 69 66 20 28 | 28 65 6e 75 6d 20 72 65 |.. if (|(enum re| |00004980| 67 65 78 70 63 6f 64 65 | 29 20 2a 70 20 21 3d 20 |gexpcode|) *p != | |00004990| 6f 6e 5f 66 61 69 6c 75 | 72 65 5f 6a 75 6d 70 29 |on_failu|re_jump)| |000049a0| 0d 09 20 20 20 20 63 6f | 6e 74 69 6e 75 65 3b 0d |.. co|ntinue;.| |000049b0| 09 20 20 70 2b 2b 3b 0d | 09 20 20 6a 20 3d 20 2a |. p++;.|. j = *| |000049c0| 70 2b 2b 20 26 20 30 33 | 37 37 3b 0d 09 20 20 6a |p++ & 03|77;.. j| |000049d0| 20 2b 3d 20 53 49 47 4e | 5f 45 58 54 45 4e 44 5f | += SIGN|_EXTEND_| |000049e0| 43 48 41 52 20 28 2a 28 | 63 68 61 72 20 2a 29 70 |CHAR (*(|char *)p| |000049f0| 29 20 3c 3c 20 38 3b 0d | 09 20 20 70 20 2b 3d 20 |) << 8;.|. p += | |00004a00| 6a 20 2b 20 31 3b 09 09 | 2f 2a 20 54 68 65 20 31 |j + 1;..|/* The 1| |00004a10| 20 63 6f 6d 70 65 6e 73 | 61 74 65 73 20 66 6f 72 | compens|ates for| |00004a20| 20 6d 69 73 73 69 6e 67 | 20 2b 2b 20 61 62 6f 76 | missing| ++ abov| |00004a30| 65 20 2a 2f 0d 09 20 20 | 69 66 20 28 73 74 61 63 |e */.. |if (stac| |00004a40| 6b 70 20 21 3d 20 73 74 | 61 63 6b 62 20 26 26 20 |kp != st|ackb && | |00004a50| 2a 73 74 61 63 6b 70 20 | 3d 3d 20 70 29 0d 09 20 |*stackp |== p).. | |00004a60| 20 20 20 73 74 61 63 6b | 70 2d 2d 3b 0d 09 20 20 | stack|p--;.. | |00004a70| 63 6f 6e 74 69 6e 75 65 | 3b 0d 09 20 20 0d 09 63 |continue|;.. ..c| |00004a80| 61 73 65 20 6f 6e 5f 66 | 61 69 6c 75 72 65 5f 6a |ase on_f|ailure_j| |00004a90| 75 6d 70 3a 0d 09 20 20 | 6a 20 3d 20 2a 70 2b 2b |ump:.. |j = *p++| |00004aa0| 20 26 20 30 33 37 37 3b | 0d 09 20 20 6a 20 2b 3d | & 0377;|.. j +=| |00004ab0| 20 53 49 47 4e 5f 45 58 | 54 45 4e 44 5f 43 48 41 | SIGN_EX|TEND_CHA| |00004ac0| 52 20 28 2a 28 63 68 61 | 72 20 2a 29 70 29 20 3c |R (*(cha|r *)p) <| |00004ad0| 3c 20 38 3b 0d 09 20 20 | 70 2b 2b 3b 0d 09 20 20 |< 8;.. |p++;.. | |00004ae0| 2a 2b 2b 73 74 61 63 6b | 70 20 3d 20 70 20 2b 20 |*++stack|p = p + | |00004af0| 6a 3b 0d 09 20 20 63 6f | 6e 74 69 6e 75 65 3b 0d |j;.. co|ntinue;.| |00004b00| 0d 09 63 61 73 65 20 73 | 74 61 72 74 5f 6d 65 6d |..case s|tart_mem| |00004b10| 6f 72 79 3a 0d 09 63 61 | 73 65 20 73 74 6f 70 5f |ory:..ca|se stop_| |00004b20| 6d 65 6d 6f 72 79 3a 0d | 09 20 20 70 2b 2b 3b 0d |memory:.|. p++;.| |00004b30| 09 20 20 63 6f 6e 74 69 | 6e 75 65 3b 0d 0d 09 63 |. conti|nue;...c| |00004b40| 61 73 65 20 64 75 70 6c | 69 63 61 74 65 3a 0d 09 |ase dupl|icate:..| |00004b50| 20 20 62 75 66 70 2d 3e | 63 61 6e 5f 62 65 5f 6e | bufp->|can_be_n| |00004b60| 75 6c 6c 20 3d 20 31 3b | 0d 09 20 20 66 61 73 74 |ull = 1;|.. fast| |00004b70| 6d 61 70 5b 27 5c 72 27 | 5d 20 3d 20 31 3b 20 20 |map['\r'|] = 1; | |00004b80| 2f 2a 20 6e 65 77 6c 69 | 6e 65 20 63 68 61 6e 67 |/* newli|ne chang| |00004b90| 65 64 20 2a 2f 0d 09 63 | 61 73 65 20 61 6e 79 63 |ed */..c|ase anyc| |00004ba0| 68 61 72 3a 0d 09 20 20 | 66 6f 72 20 28 6a 20 3d |har:.. |for (j =| |00004bb0| 20 30 3b 20 6a 20 3c 20 | 28 31 20 3c 3c 20 42 59 | 0; j < |(1 << BY| |00004bc0| 54 45 57 49 44 54 48 29 | 3b 20 6a 2b 2b 29 0d 09 |TEWIDTH)|; j++)..| |00004bd0| 20 20 20 20 69 66 20 28 | 6a 20 21 3d 20 27 5c 72 | if (|j != '\r| |00004be0| 27 29 20 20 2f 2a 20 6e | 65 77 6c 69 6e 65 20 63 |') /* n|ewline c| |00004bf0| 68 61 6e 67 65 64 20 2a | 2f 0d 09 20 20 20 20 20 |hanged *|/.. | |00004c00| 20 66 61 73 74 6d 61 70 | 5b 6a 5d 20 3d 20 31 3b | fastmap|[j] = 1;| |00004c10| 0d 09 20 20 69 66 20 28 | 62 75 66 70 2d 3e 63 61 |.. if (|bufp->ca| |00004c20| 6e 5f 62 65 5f 6e 75 6c | 6c 29 0d 09 20 20 20 20 |n_be_nul|l).. | |00004c30| 72 65 74 75 72 6e 3b 0d | 09 20 20 2f 2a 20 44 6f |return;.|. /* Do| |00004c40| 6e 27 74 20 72 65 74 75 | 72 6e 3b 20 63 68 65 63 |n't retu|rn; chec| |00004c50| 6b 20 74 68 65 20 61 6c | 74 65 72 6e 61 74 69 76 |k the al|ternativ| |00004c60| 65 20 70 61 74 68 73 0d | 09 20 20 20 20 20 73 6f |e paths.|. so| |00004c70| 20 77 65 20 63 61 6e 20 | 73 65 74 20 63 61 6e 5f | we can |set can_| |00004c80| 62 65 5f 6e 75 6c 6c 20 | 69 66 20 61 70 70 72 6f |be_null |if appro| |00004c90| 70 72 69 61 74 65 2e 20 | 20 2a 2f 0d 09 20 20 62 |priate. | */.. b| |00004ca0| 72 65 61 6b 3b 0d 0d 09 | 63 61 73 65 20 77 6f 72 |reak;...|case wor| |00004cb0| 64 63 68 61 72 3a 0d 09 | 20 20 66 6f 72 20 28 6a |dchar:..| for (j| |00004cc0| 20 3d 20 30 3b 20 6a 20 | 3c 20 28 31 20 3c 3c 20 | = 0; j |< (1 << | |00004cd0| 42 59 54 45 57 49 44 54 | 48 29 3b 20 6a 2b 2b 29 |BYTEWIDT|H); j++)| |00004ce0| 0d 09 20 20 20 20 69 66 | 20 28 53 59 4e 54 41 58 |.. if| (SYNTAX| |00004cf0| 20 28 6a 29 20 3d 3d 20 | 53 77 6f 72 64 29 0d 09 | (j) == |Sword)..| |00004d00| 20 20 20 20 20 20 66 61 | 73 74 6d 61 70 5b 6a 5d | fa|stmap[j]| |00004d10| 20 3d 20 31 3b 0d 09 20 | 20 62 72 65 61 6b 3b 0d | = 1;.. | break;.| |00004d20| 0d 09 63 61 73 65 20 6e | 6f 74 77 6f 72 64 63 68 |..case n|otwordch| |00004d30| 61 72 3a 0d 09 20 20 66 | 6f 72 20 28 6a 20 3d 20 |ar:.. f|or (j = | |00004d40| 30 3b 20 6a 20 3c 20 28 | 31 20 3c 3c 20 42 59 54 |0; j < (|1 << BYT| |00004d50| 45 57 49 44 54 48 29 3b | 20 6a 2b 2b 29 0d 09 20 |EWIDTH);| j++).. | |00004d60| 20 20 20 69 66 20 28 53 | 59 4e 54 41 58 20 28 6a | if (S|YNTAX (j| |00004d70| 29 20 21 3d 20 53 77 6f | 72 64 29 0d 09 20 20 20 |) != Swo|rd).. | |00004d80| 20 20 20 66 61 73 74 6d | 61 70 5b 6a 5d 20 3d 20 | fastm|ap[j] = | |00004d90| 31 3b 0d 09 20 20 62 72 | 65 61 6b 3b 0d 0d 23 69 |1;.. br|eak;..#i| |00004da0| 66 64 65 66 20 65 6d 61 | 63 73 0d 09 63 61 73 65 |fdef ema|cs..case| |00004db0| 20 73 79 6e 74 61 78 73 | 70 65 63 3a 0d 09 20 20 | syntaxs|pec:.. | |00004dc0| 6b 20 3d 20 2a 70 2b 2b | 3b 0d 09 20 20 66 6f 72 |k = *p++|;.. for| |00004dd0| 20 28 6a 20 3d 20 30 3b | 20 6a 20 3c 20 28 31 20 | (j = 0;| j < (1 | |00004de0| 3c 3c 20 42 59 54 45 57 | 49 44 54 48 29 3b 20 6a |<< BYTEW|IDTH); j| |00004df0| 2b 2b 29 0d 09 20 20 20 | 20 69 66 20 28 53 59 4e |++).. | if (SYN| |00004e00| 54 41 58 20 28 6a 29 20 | 3d 3d 20 28 65 6e 75 6d |TAX (j) |== (enum| |00004e10| 20 73 79 6e 74 61 78 63 | 6f 64 65 29 20 6b 29 0d | syntaxc|ode) k).| |00004e20| 09 20 20 20 20 20 20 66 | 61 73 74 6d 61 70 5b 6a |. f|astmap[j| |00004e30| 5d 20 3d 20 31 3b 0d 09 | 20 20 62 72 65 61 6b 3b |] = 1;..| break;| |00004e40| 0d 0d 09 63 61 73 65 20 | 6e 6f 74 73 79 6e 74 61 |...case |notsynta| |00004e50| 78 73 70 65 63 3a 0d 09 | 20 20 6b 20 3d 20 2a 70 |xspec:..| k = *p| |00004e60| 2b 2b 3b 0d 09 20 20 66 | 6f 72 20 28 6a 20 3d 20 |++;.. f|or (j = | |00004e70| 30 3b 20 6a 20 3c 20 28 | 31 20 3c 3c 20 42 59 54 |0; j < (|1 << BYT| |00004e80| 45 57 49 44 54 48 29 3b | 20 6a 2b 2b 29 0d 09 20 |EWIDTH);| j++).. | |00004e90| 20 20 20 69 66 20 28 53 | 59 4e 54 41 58 20 28 6a | if (S|YNTAX (j| |00004ea0| 29 20 21 3d 20 28 65 6e | 75 6d 20 73 79 6e 74 61 |) != (en|um synta| |00004eb0| 78 63 6f 64 65 29 20 6b | 29 0d 09 20 20 20 20 20 |xcode) k|).. | |00004ec0| 20 66 61 73 74 6d 61 70 | 5b 6a 5d 20 3d 20 31 3b | fastmap|[j] = 1;| |00004ed0| 0d 09 20 20 62 72 65 61 | 6b 3b 0d 23 65 6e 64 69 |.. brea|k;.#endi| |00004ee0| 66 20 2f 2a 20 65 6d 61 | 63 73 20 2a 2f 0d 0d 09 |f /* ema|cs */...| |00004ef0| 63 61 73 65 20 63 68 61 | 72 73 65 74 3a 0d 09 20 |case cha|rset:.. | |00004f00| 20 66 6f 72 20 28 6a 20 | 3d 20 2a 70 2b 2b 20 2a | for (j |= *p++ *| |00004f10| 20 42 59 54 45 57 49 44 | 54 48 20 2d 20 31 3b 20 | BYTEWID|TH - 1; | |00004f20| 6a 20 3e 3d 20 30 3b 20 | 6a 2d 2d 29 0d 09 20 20 |j >= 0; |j--).. | |00004f30| 20 20 69 66 20 28 70 5b | 6a 20 2f 20 42 59 54 45 | if (p[|j / BYTE| |00004f40| 57 49 44 54 48 5d 20 26 | 20 28 31 20 3c 3c 20 28 |WIDTH] &| (1 << (| |00004f50| 6a 20 25 20 42 59 54 45 | 57 49 44 54 48 29 29 29 |j % BYTE|WIDTH)))| |00004f60| 0d 09 20 20 20 20 20 20 | 7b 0d 09 09 69 66 20 28 |.. |{...if (| |00004f70| 74 72 61 6e 73 6c 61 74 | 65 29 0d 09 09 20 20 66 |translat|e)... f| |00004f80| 61 73 74 6d 61 70 5b 74 | 72 61 6e 73 6c 61 74 65 |astmap[t|ranslate| |00004f90| 5b 6a 5d 5d 20 3d 20 31 | 3b 0d 09 09 65 6c 73 65 |[j]] = 1|;...else| |00004fa0| 0d 09 09 20 20 66 61 73 | 74 6d 61 70 5b 6a 5d 20 |... fas|tmap[j] | |00004fb0| 3d 20 31 3b 0d 09 20 20 | 20 20 20 20 7d 0d 09 20 |= 1;.. | }.. | |00004fc0| 20 62 72 65 61 6b 3b 0d | 0d 09 63 61 73 65 20 63 | break;.|..case c| |00004fd0| 68 61 72 73 65 74 5f 6e | 6f 74 3a 0d 09 20 20 2f |harset_n|ot:.. /| |00004fe0| 2a 20 43 68 61 72 73 20 | 62 65 79 6f 6e 64 20 65 |* Chars |beyond e| |00004ff0| 6e 64 20 6f 66 20 6d 61 | 70 20 6d 75 73 74 20 62 |nd of ma|p must b| |00005000| 65 20 61 6c 6c 6f 77 65 | 64 20 2a 2f 0d 09 20 20 |e allowe|d */.. | |00005010| 66 6f 72 20 28 6a 20 3d | 20 2a 70 20 2a 20 42 59 |for (j =| *p * BY| |00005020| 54 45 57 49 44 54 48 3b | 20 6a 20 3c 20 28 31 20 |TEWIDTH;| j < (1 | |00005030| 3c 3c 20 42 59 54 45 57 | 49 44 54 48 29 3b 20 6a |<< BYTEW|IDTH); j| |00005040| 2b 2b 29 0d 09 20 20 20 | 20 69 66 20 28 74 72 61 |++).. | if (tra| |00005050| 6e 73 6c 61 74 65 29 0d | 09 20 20 20 20 20 20 66 |nslate).|. f| |00005060| 61 73 74 6d 61 70 5b 74 | 72 61 6e 73 6c 61 74 65 |astmap[t|ranslate| |00005070| 5b 6a 5d 5d 20 3d 20 31 | 3b 0d 09 20 20 20 20 65 |[j]] = 1|;.. e| |00005080| 6c 73 65 0d 09 20 20 20 | 20 20 20 66 61 73 74 6d |lse.. | fastm| |00005090| 61 70 5b 6a 5d 20 3d 20 | 31 3b 0d 0d 09 20 20 66 |ap[j] = |1;... f| |000050a0| 6f 72 20 28 6a 20 3d 20 | 2a 70 2b 2b 20 2a 20 42 |or (j = |*p++ * B| |000050b0| 59 54 45 57 49 44 54 48 | 20 2d 20 31 3b 20 6a 20 |YTEWIDTH| - 1; j | |000050c0| 3e 3d 20 30 3b 20 6a 2d | 2d 29 0d 09 20 20 20 20 |>= 0; j-|-).. | |000050d0| 69 66 20 28 21 28 70 5b | 6a 20 2f 20 42 59 54 45 |if (!(p[|j / BYTE| |000050e0| 57 49 44 54 48 5d 20 26 | 20 28 31 20 3c 3c 20 28 |WIDTH] &| (1 << (| |000050f0| 6a 20 25 20 42 59 54 45 | 57 49 44 54 48 29 29 29 |j % BYTE|WIDTH)))| |00005100| 29 0d 09 20 20 20 20 20 | 20 7b 0d 09 09 69 66 20 |).. | {...if | |00005110| 28 74 72 61 6e 73 6c 61 | 74 65 29 0d 09 09 20 20 |(transla|te)... | |00005120| 66 61 73 74 6d 61 70 5b | 74 72 61 6e 73 6c 61 74 |fastmap[|translat| |00005130| 65 5b 6a 5d 5d 20 3d 20 | 31 3b 0d 09 09 65 6c 73 |e[j]] = |1;...els| |00005140| 65 0d 09 09 20 20 66 61 | 73 74 6d 61 70 5b 6a 5d |e... fa|stmap[j]| |00005150| 20 3d 20 31 3b 0d 09 20 | 20 20 20 20 20 7d 0d 09 | = 1;.. | }..| |00005160| 20 20 62 72 65 61 6b 3b | 0d 09 7d 0d 0d 20 20 20 | break;|..}.. | |00005170| 20 20 20 2f 2a 20 47 65 | 74 20 68 65 72 65 20 6d | /* Ge|t here m| |00005180| 65 61 6e 73 20 77 65 20 | 68 61 76 65 20 73 75 63 |eans we |have suc| |00005190| 63 65 73 73 66 75 6c 6c | 79 20 66 6f 75 6e 64 20 |cessfull|y found | |000051a0| 74 68 65 20 70 6f 73 73 | 69 62 6c 65 20 73 74 61 |the poss|ible sta| |000051b0| 72 74 69 6e 67 20 63 68 | 61 72 61 63 74 65 72 73 |rting ch|aracters| |000051c0| 0d 09 20 6f 66 20 6f 6e | 65 20 70 61 74 68 20 6f |.. of on|e path o| |000051d0| 66 20 74 68 65 20 70 61 | 74 74 65 72 6e 2e 20 20 |f the pa|ttern. | |000051e0| 57 65 20 6e 65 65 64 20 | 6e 6f 74 20 66 6f 6c 6c |We need |not foll| |000051f0| 6f 77 20 74 68 69 73 20 | 70 61 74 68 20 61 6e 79 |ow this |path any| |00005200| 20 66 61 72 74 68 65 72 | 2e 0d 09 20 49 6e 73 74 | farther|... Inst| |00005210| 65 61 64 2c 20 6c 6f 6f | 6b 20 61 74 20 74 68 65 |ead, loo|k at the| |00005220| 20 6e 65 78 74 20 61 6c | 74 65 72 6e 61 74 69 76 | next al|ternativ| |00005230| 65 20 72 65 6d 65 6d 62 | 65 72 65 64 20 69 6e 20 |e rememb|ered in | |00005240| 74 68 65 20 73 74 61 63 | 6b 2e 20 2a 2f 0d 20 20 |the stac|k. */. | |00005250| 20 20 20 20 69 66 20 28 | 73 74 61 63 6b 70 20 21 | if (|stackp !| |00005260| 3d 20 73 74 61 63 6b 62 | 29 0d 09 70 20 3d 20 2a |= stackb|)..p = *| |00005270| 73 74 61 63 6b 70 2d 2d | 3b 0d 20 20 20 20 20 20 |stackp--|;. | |00005280| 65 6c 73 65 0d 09 62 72 | 65 61 6b 3b 0d 20 20 20 |else..br|eak;. | |00005290| 20 7d 0d 7d 0d 0c 0d 2f | 2a 20 4c 69 6b 65 20 72 | }.}.../|* Like r| |000052a0| 65 5f 73 65 61 72 63 68 | 5f 32 2c 20 62 65 6c 6f |e_search|_2, belo| |000052b0| 77 2c 20 62 75 74 20 6f | 6e 6c 79 20 6f 6e 65 20 |w, but o|nly one | |000052c0| 73 74 72 69 6e 67 20 69 | 73 20 73 70 65 63 69 66 |string i|s specif| |000052d0| 69 65 64 2e 20 2a 2f 0d | 0d 69 6e 74 0d 72 65 5f |ied. */.|.int.re_| |000052e0| 73 65 61 72 63 68 20 28 | 70 62 75 66 70 2c 20 73 |search (|pbufp, s| |000052f0| 74 72 69 6e 67 2c 20 73 | 69 7a 65 2c 20 73 74 61 |tring, s|ize, sta| |00005300| 72 74 70 6f 73 2c 20 72 | 61 6e 67 65 2c 20 72 65 |rtpos, r|ange, re| |00005310| 67 73 29 0d 20 20 20 20 | 20 73 74 72 75 63 74 20 |gs). | struct | |00005320| 72 65 5f 70 61 74 74 65 | 72 6e 5f 62 75 66 66 65 |re_patte|rn_buffe| |00005330| 72 20 2a 70 62 75 66 70 | 3b 0d 20 20 20 20 20 63 |r *pbufp|;. c| |00005340| 68 61 72 20 2a 73 74 72 | 69 6e 67 3b 0d 20 20 20 |har *str|ing;. | |00005350| 20 20 69 6e 74 20 73 69 | 7a 65 2c 20 73 74 61 72 | int si|ze, star| |00005360| 74 70 6f 73 2c 20 72 61 | 6e 67 65 3b 0d 20 20 20 |tpos, ra|nge;. | |00005370| 20 20 73 74 72 75 63 74 | 20 72 65 5f 72 65 67 69 | struct| re_regi| |00005380| 73 74 65 72 73 20 2a 72 | 65 67 73 3b 0d 7b 0d 20 |sters *r|egs;.{. | |00005390| 20 72 65 74 75 72 6e 20 | 72 65 5f 73 65 61 72 63 | return |re_searc| |000053a0| 68 5f 32 20 28 70 62 75 | 66 70 2c 20 30 2c 20 30 |h_2 (pbu|fp, 0, 0| |000053b0| 2c 20 73 74 72 69 6e 67 | 2c 20 73 69 7a 65 2c 20 |, string|, size, | |000053c0| 73 74 61 72 74 70 6f 73 | 2c 20 72 61 6e 67 65 2c |startpos|, range,| |000053d0| 20 72 65 67 73 2c 20 73 | 69 7a 65 29 3b 0d 7d 0d | regs, s|ize);.}.| |000053e0| 0d 2f 2a 20 4c 69 6b 65 | 20 72 65 5f 6d 61 74 63 |./* Like| re_matc| |000053f0| 68 5f 32 20 62 75 74 20 | 74 72 69 65 73 20 66 69 |h_2 but |tries fi| |00005400| 72 73 74 20 61 20 6d 61 | 74 63 68 20 73 74 61 72 |rst a ma|tch star| |00005410| 74 69 6e 67 20 61 74 20 | 69 6e 64 65 78 20 53 54 |ting at |index ST| |00005420| 41 52 54 50 4f 53 2c 0d | 20 20 20 74 68 65 6e 20 |ARTPOS,.| then | |00005430| 61 74 20 53 54 41 52 54 | 50 4f 53 20 2b 20 31 2c |at START|POS + 1,| |00005440| 20 61 6e 64 20 73 6f 20 | 6f 6e 2e 0d 20 20 20 52 | and so |on.. R| |00005450| 41 4e 47 45 20 69 73 20 | 74 68 65 20 6e 75 6d 62 |ANGE is |the numb| |00005460| 65 72 20 6f 66 20 70 6c | 61 63 65 73 20 74 6f 20 |er of pl|aces to | |00005470| 74 72 79 20 62 65 66 6f | 72 65 20 67 69 76 69 6e |try befo|re givin| |00005480| 67 20 75 70 2e 0d 20 20 | 20 49 66 20 52 41 4e 47 |g up.. | If RANG| |00005490| 45 20 69 73 20 6e 65 67 | 61 74 69 76 65 2c 20 74 |E is neg|ative, t| |000054a0| 68 65 20 73 74 61 72 74 | 69 6e 67 20 70 6f 73 69 |he start|ing posi| |000054b0| 74 69 6f 6e 73 20 74 72 | 69 65 64 20 61 72 65 0d |tions tr|ied are.| |000054c0| 20 20 20 20 53 54 41 52 | 54 50 4f 53 2c 20 53 54 | STAR|TPOS, ST| |000054d0| 41 52 54 50 4f 53 20 2d | 20 31 2c 20 65 74 63 2e |ARTPOS -| 1, etc.| |000054e0| 0d 20 20 20 49 74 20 69 | 73 20 75 70 20 74 6f 20 |. It i|s up to | |000054f0| 74 68 65 20 63 61 6c 6c | 65 72 20 74 6f 20 6d 61 |the call|er to ma| |00005500| 6b 65 20 73 75 72 65 20 | 74 68 61 74 20 72 61 6e |ke sure |that ran| |00005510| 67 65 20 69 73 20 6e 6f | 74 20 73 6f 20 6c 61 72 |ge is no|t so lar| |00005520| 67 65 0d 20 20 20 61 73 | 20 74 6f 20 74 61 6b 65 |ge. as| to take| |00005530| 20 74 68 65 20 73 74 61 | 72 74 69 6e 67 20 70 6f | the sta|rting po| |00005540| 73 69 74 69 6f 6e 20 6f | 75 74 73 69 64 65 20 6f |sition o|utside o| |00005550| 66 20 74 68 65 20 69 6e | 70 75 74 20 73 74 72 69 |f the in|put stri| |00005560| 6e 67 73 2e 0d 0d 54 68 | 65 20 76 61 6c 75 65 20 |ngs...Th|e value | |00005570| 72 65 74 75 72 6e 65 64 | 20 69 73 20 74 68 65 20 |returned| is the | |00005580| 70 6f 73 69 74 69 6f 6e | 20 61 74 20 77 68 69 63 |position| at whic| |00005590| 68 20 74 68 65 20 6d 61 | 74 63 68 20 77 61 73 20 |h the ma|tch was | |000055a0| 66 6f 75 6e 64 2c 0d 20 | 6f 72 20 2d 31 20 69 66 |found,. |or -1 if| |000055b0| 20 6e 6f 20 6d 61 74 63 | 68 20 77 61 73 20 66 6f | no matc|h was fo| |000055c0| 75 6e 64 2c 0d 20 6f 72 | 20 2d 32 20 69 66 20 65 |und,. or| -2 if e| |000055d0| 72 72 6f 72 20 28 73 75 | 63 68 20 61 73 20 66 61 |rror (su|ch as fa| |000055e0| 69 6c 75 72 65 20 73 74 | 61 63 6b 20 6f 76 65 72 |ilure st|ack over| |000055f0| 66 6c 6f 77 29 2e 20 20 | 2a 2f 0d 0d 69 6e 74 0d |flow). |*/..int.| |00005600| 72 65 5f 73 65 61 72 63 | 68 5f 32 20 28 70 62 75 |re_searc|h_2 (pbu| |00005610| 66 70 2c 20 73 74 72 69 | 6e 67 31 2c 20 73 69 7a |fp, stri|ng1, siz| |00005620| 65 31 2c 20 73 74 72 69 | 6e 67 32 2c 20 73 69 7a |e1, stri|ng2, siz| |00005630| 65 32 2c 20 73 74 61 72 | 74 70 6f 73 2c 20 72 61 |e2, star|tpos, ra| |00005640| 6e 67 65 2c 20 72 65 67 | 73 2c 20 6d 73 74 6f 70 |nge, reg|s, mstop| |00005650| 29 0d 20 20 20 20 20 73 | 74 72 75 63 74 20 72 65 |). s|truct re| |00005660| 5f 70 61 74 74 65 72 6e | 5f 62 75 66 66 65 72 20 |_pattern|_buffer | |00005670| 2a 70 62 75 66 70 3b 0d | 20 20 20 20 20 63 68 61 |*pbufp;.| cha| |00005680| 72 20 2a 73 74 72 69 6e | 67 31 2c 20 2a 73 74 72 |r *strin|g1, *str| |00005690| 69 6e 67 32 3b 0d 20 20 | 20 20 20 69 6e 74 20 73 |ing2;. | int s| |000056a0| 69 7a 65 31 2c 20 73 69 | 7a 65 32 3b 0d 20 20 20 |ize1, si|ze2;. | |000056b0| 20 20 69 6e 74 20 73 74 | 61 72 74 70 6f 73 3b 0d | int st|artpos;.| |000056c0| 20 20 20 20 20 72 65 67 | 69 73 74 65 72 20 69 6e | reg|ister in| |000056d0| 74 20 72 61 6e 67 65 3b | 0d 20 20 20 20 20 73 74 |t range;|. st| |000056e0| 72 75 63 74 20 72 65 5f | 72 65 67 69 73 74 65 72 |ruct re_|register| |000056f0| 73 20 2a 72 65 67 73 3b | 0d 20 20 20 20 20 69 6e |s *regs;|. in| |00005700| 74 20 6d 73 74 6f 70 3b | 0d 7b 0d 20 20 72 65 67 |t mstop;|.{. reg| |00005710| 69 73 74 65 72 20 63 68 | 61 72 20 2a 66 61 73 74 |ister ch|ar *fast| |00005720| 6d 61 70 20 3d 20 70 62 | 75 66 70 2d 3e 66 61 73 |map = pb|ufp->fas| |00005730| 74 6d 61 70 3b 0d 20 20 | 72 65 67 69 73 74 65 72 |tmap;. |register| |00005740| 20 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 2a | unsigne|d char *| |00005750| 74 72 61 6e 73 6c 61 74 | 65 20 3d 20 28 75 6e 73 |translat|e = (uns| |00005760| 69 67 6e 65 64 20 63 68 | 61 72 20 2a 29 20 70 62 |igned ch|ar *) pb| |00005770| 75 66 70 2d 3e 74 72 61 | 6e 73 6c 61 74 65 3b 0d |ufp->tra|nslate;.| |00005780| 20 20 69 6e 74 20 74 6f | 74 61 6c 20 3d 20 73 69 | int to|tal = si| |00005790| 7a 65 31 20 2b 20 73 69 | 7a 65 32 3b 0d 20 20 69 |ze1 + si|ze2;. i| |000057a0| 6e 74 20 76 61 6c 3b 0d | 0d 20 20 2f 2a 20 55 70 |nt val;.|. /* Up| |000057b0| 64 61 74 65 20 74 68 65 | 20 66 61 73 74 6d 61 70 |date the| fastmap| |000057c0| 20 6e 6f 77 20 69 66 20 | 6e 6f 74 20 63 6f 72 72 | now if |not corr| |000057d0| 65 63 74 20 61 6c 72 65 | 61 64 79 20 2a 2f 0d 20 |ect alre|ady */. | |000057e0| 20 69 66 20 28 66 61 73 | 74 6d 61 70 20 26 26 20 | if (fas|tmap && | |000057f0| 21 70 62 75 66 70 2d 3e | 66 61 73 74 6d 61 70 5f |!pbufp->|fastmap_| |00005800| 61 63 63 75 72 61 74 65 | 29 0d 20 20 20 20 72 65 |accurate|). re| |00005810| 5f 63 6f 6d 70 69 6c 65 | 5f 66 61 73 74 6d 61 70 |_compile|_fastmap| |00005820| 20 28 70 62 75 66 70 29 | 3b 0d 20 20 0d 20 20 2f | (pbufp)|;. . /| |00005830| 2a 20 44 6f 6e 27 74 20 | 77 61 73 74 65 20 74 69 |* Don't |waste ti| |00005840| 6d 65 20 69 6e 20 61 20 | 6c 6f 6e 67 20 73 65 61 |me in a |long sea| |00005850| 72 63 68 20 66 6f 72 20 | 61 20 70 61 74 74 65 72 |rch for |a patter| |00005860| 6e 0d 20 20 20 20 20 74 | 68 61 74 20 73 61 79 73 |n. t|hat says| |00005870| 20 69 74 20 69 73 20 61 | 6e 63 68 6f 72 65 64 2e | it is a|nchored.| |00005880| 20 20 2a 2f 0d 20 20 69 | 66 20 28 70 62 75 66 70 | */. i|f (pbufp| |00005890| 2d 3e 75 73 65 64 20 3e | 20 30 20 26 26 20 28 65 |->used >| 0 && (e| |000058a0| 6e 75 6d 20 72 65 67 65 | 78 70 63 6f 64 65 29 20 |num rege|xpcode) | |000058b0| 70 62 75 66 70 2d 3e 62 | 75 66 66 65 72 5b 30 5d |pbufp->b|uffer[0]| |000058c0| 20 3d 3d 20 62 65 67 62 | 75 66 0d 20 20 20 20 20 | == begb|uf. | |000058d0| 20 26 26 20 72 61 6e 67 | 65 20 3e 20 30 29 0d 20 | && rang|e > 0). | |000058e0| 20 20 20 7b 0d 20 20 20 | 20 20 20 69 66 20 28 73 | {. | if (s| |000058f0| 74 61 72 74 70 6f 73 20 | 3e 20 30 29 0d 09 72 65 |tartpos |> 0)..re| |00005900| 74 75 72 6e 20 2d 31 3b | 0d 20 20 20 20 20 20 65 |turn -1;|. e| |00005910| 6c 73 65 0d 09 72 61 6e | 67 65 20 3d 20 31 3b 0d |lse..ran|ge = 1;.| |00005920| 20 20 20 20 7d 0d 0d 20 | 20 77 68 69 6c 65 20 28 | }.. | while (| |00005930| 31 29 0d 20 20 20 20 7b | 0d 20 20 20 20 20 20 2f |1). {|. /| |00005940| 2a 20 49 66 20 61 20 66 | 61 73 74 6d 61 70 20 69 |* If a f|astmap i| |00005950| 73 20 73 75 70 70 6c 69 | 65 64 2c 20 73 6b 69 70 |s suppli|ed, skip| |00005960| 20 71 75 69 63 6b 6c 79 | 20 6f 76 65 72 20 63 68 | quickly| over ch| |00005970| 61 72 61 63 74 65 72 73 | 0d 09 20 74 68 61 74 20 |aracters|.. that | |00005980| 63 61 6e 6e 6f 74 20 70 | 6f 73 73 69 62 6c 79 20 |cannot p|ossibly | |00005990| 62 65 20 74 68 65 20 73 | 74 61 72 74 20 6f 66 20 |be the s|tart of | |000059a0| 61 20 6d 61 74 63 68 2e | 0d 09 20 4e 6f 74 65 2c |a match.|.. Note,| |000059b0| 20 68 6f 77 65 76 65 72 | 2c 20 74 68 61 74 20 69 | however|, that i| |000059c0| 66 20 74 68 65 20 70 61 | 74 74 65 72 6e 20 63 61 |f the pa|ttern ca| |000059d0| 6e 20 70 6f 73 73 69 62 | 6c 79 20 6d 61 74 63 68 |n possib|ly match| |000059e0| 0d 09 20 74 68 65 20 6e | 75 6c 6c 20 73 74 72 69 |.. the n|ull stri| |000059f0| 6e 67 2c 20 77 65 20 6d | 75 73 74 20 74 65 73 74 |ng, we m|ust test| |00005a00| 20 69 74 20 61 74 20 65 | 61 63 68 20 73 74 61 72 | it at e|ach star| |00005a10| 74 69 6e 67 20 70 6f 69 | 6e 74 0d 09 20 73 6f 20 |ting poi|nt.. so | |00005a20| 74 68 61 74 20 77 65 20 | 74 61 6b 65 20 74 68 65 |that we |take the| |00005a30| 20 66 69 72 73 74 20 6e | 75 6c 6c 20 73 74 72 69 | first n|ull stri| |00005a40| 6e 67 20 77 65 20 67 65 | 74 2e 20 20 2a 2f 0d 0d |ng we ge|t. */..| |00005a50| 20 20 20 20 20 20 69 66 | 20 28 66 61 73 74 6d 61 | if| (fastma| |00005a60| 70 20 26 26 20 73 74 61 | 72 74 70 6f 73 20 3c 20 |p && sta|rtpos < | |00005a70| 74 6f 74 61 6c 20 26 26 | 20 70 62 75 66 70 2d 3e |total &&| pbufp->| |00005a80| 63 61 6e 5f 62 65 5f 6e | 75 6c 6c 20 21 3d 20 31 |can_be_n|ull != 1| |00005a90| 29 0d 09 7b 0d 09 20 20 | 69 66 20 28 72 61 6e 67 |)..{.. |if (rang| |00005aa0| 65 20 3e 20 30 29 0d 09 | 20 20 20 20 7b 0d 09 20 |e > 0)..| {.. | |00005ab0| 20 20 20 20 20 72 65 67 | 69 73 74 65 72 20 69 6e | reg|ister in| |00005ac0| 74 20 6c 69 6d 20 3d 20 | 30 3b 0d 09 20 20 20 20 |t lim = |0;.. | |00005ad0| 20 20 72 65 67 69 73 74 | 65 72 20 75 6e 73 69 67 | regist|er unsig| |00005ae0| 6e 65 64 20 63 68 61 72 | 20 2a 70 3b 0d 09 20 20 |ned char| *p;.. | |00005af0| 20 20 20 20 69 6e 74 20 | 69 72 61 6e 67 65 20 3d | int |irange =| |00005b00| 20 72 61 6e 67 65 3b 0d | 09 20 20 20 20 20 20 69 | range;.|. i| |00005b10| 66 20 28 73 74 61 72 74 | 70 6f 73 20 3c 20 73 69 |f (start|pos < si| |00005b20| 7a 65 31 20 26 26 20 73 | 74 61 72 74 70 6f 73 20 |ze1 && s|tartpos | |00005b30| 2b 20 72 61 6e 67 65 20 | 3e 3d 20 73 69 7a 65 31 |+ range |>= size1| |00005b40| 29 0d 09 09 6c 69 6d 20 | 3d 20 72 61 6e 67 65 20 |)...lim |= range | |00005b50| 2d 20 28 73 69 7a 65 31 | 20 2d 20 73 74 61 72 74 |- (size1| - start| |00005b60| 70 6f 73 29 3b 0d 0d 09 | 20 20 20 20 20 20 70 20 |pos);...| p | |00005b70| 3d 20 28 28 75 6e 73 69 | 67 6e 65 64 20 63 68 61 |= ((unsi|gned cha| |00005b80| 72 20 2a 29 0d 09 09 20 | 20 20 26 28 73 74 61 72 |r *)... | &(star| |00005b90| 74 70 6f 73 20 3e 3d 20 | 73 69 7a 65 31 20 3f 20 |tpos >= |size1 ? | |00005ba0| 73 74 72 69 6e 67 32 20 | 2d 20 73 69 7a 65 31 20 |string2 |- size1 | |00005bb0| 3a 20 73 74 72 69 6e 67 | 31 29 5b 73 74 61 72 74 |: string|1)[start| |00005bc0| 70 6f 73 5d 29 3b 0d 0d | 09 20 20 20 20 20 20 69 |pos]);..|. i| |00005bd0| 66 20 28 74 72 61 6e 73 | 6c 61 74 65 29 0d 09 09 |f (trans|late)...| |00005be0| 7b 0d 09 09 20 20 77 68 | 69 6c 65 20 28 72 61 6e |{... wh|ile (ran| |00005bf0| 67 65 20 3e 20 6c 69 6d | 20 26 26 20 21 66 61 73 |ge > lim| && !fas| |00005c00| 74 6d 61 70 5b 74 72 61 | 6e 73 6c 61 74 65 5b 2a |tmap[tra|nslate[*| |00005c10| 70 2b 2b 5d 5d 29 0d 09 | 09 20 20 20 20 72 61 6e |p++]])..|. ran| |00005c20| 67 65 2d 2d 3b 0d 09 09 | 7d 0d 09 20 20 20 20 20 |ge--;...|}.. | |00005c30| 20 65 6c 73 65 0d 09 09 | 7b 0d 09 09 20 20 77 68 | else...|{... wh| |00005c40| 69 6c 65 20 28 72 61 6e | 67 65 20 3e 20 6c 69 6d |ile (ran|ge > lim| |00005c50| 20 26 26 20 21 66 61 73 | 74 6d 61 70 5b 2a 70 2b | && !fas|tmap[*p+| |00005c60| 2b 5d 29 0d 09 09 20 20 | 20 20 72 61 6e 67 65 2d |+])... | range-| |00005c70| 2d 3b 0d 09 09 7d 0d 09 | 20 20 20 20 20 20 73 74 |-;...}..| st| |00005c80| 61 72 74 70 6f 73 20 2b | 3d 20 69 72 61 6e 67 65 |artpos +|= irange| |00005c90| 20 2d 20 72 61 6e 67 65 | 3b 0d 09 20 20 20 20 7d | - range|;.. }| |00005ca0| 0d 09 20 20 65 6c 73 65 | 0d 09 20 20 20 20 7b 0d |.. else|.. {.| |00005cb0| 09 20 20 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |. r|egister | |00005cc0| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 63 3b |unsigned| char c;| |00005cd0| 0d 09 20 20 20 20 20 20 | 69 66 20 28 73 74 61 72 |.. |if (star| |00005ce0| 74 70 6f 73 20 3e 3d 20 | 73 69 7a 65 31 29 0d 09 |tpos >= |size1)..| |00005cf0| 09 63 20 3d 20 73 74 72 | 69 6e 67 32 5b 73 74 61 |.c = str|ing2[sta| |00005d00| 72 74 70 6f 73 20 2d 20 | 73 69 7a 65 31 5d 3b 0d |rtpos - |size1];.| |00005d10| 09 20 20 20 20 20 20 65 | 6c 73 65 0d 09 09 63 20 |. e|lse...c | |00005d20| 3d 20 73 74 72 69 6e 67 | 31 5b 73 74 61 72 74 70 |= string|1[startp| |00005d30| 6f 73 5d 3b 0d 09 20 20 | 20 20 20 20 63 20 26 3d |os];.. | c &=| |00005d40| 20 30 78 66 66 3b 0d 09 | 20 20 20 20 20 20 69 66 | 0xff;..| if| |00005d50| 20 28 74 72 61 6e 73 6c | 61 74 65 20 3f 20 21 66 | (transl|ate ? !f| |00005d60| 61 73 74 6d 61 70 5b 74 | 72 61 6e 73 6c 61 74 65 |astmap[t|ranslate| |00005d70| 5b 63 5d 5d 20 3a 20 21 | 66 61 73 74 6d 61 70 5b |[c]] : !|fastmap[| |00005d80| 63 5d 29 0d 09 09 67 6f | 74 6f 20 61 64 76 61 6e |c])...go|to advan| |00005d90| 63 65 3b 0d 09 20 20 20 | 20 7d 0d 09 7d 0d 0d 20 |ce;.. | }..}.. | |00005da0| 20 20 20 20 20 69 66 20 | 28 72 61 6e 67 65 20 3e | if |(range >| |00005db0| 3d 20 30 20 26 26 20 73 | 74 61 72 74 70 6f 73 20 |= 0 && s|tartpos | |00005dc0| 3d 3d 20 74 6f 74 61 6c | 0d 09 20 20 26 26 20 66 |== total|.. && f| |00005dd0| 61 73 74 6d 61 70 20 26 | 26 20 70 62 75 66 70 2d |astmap &|& pbufp-| |00005de0| 3e 63 61 6e 5f 62 65 5f | 6e 75 6c 6c 20 3d 3d 20 |>can_be_|null == | |00005df0| 30 29 0d 09 72 65 74 75 | 72 6e 20 2d 31 3b 0d 0d |0)..retu|rn -1;..| |00005e00| 20 20 20 20 20 20 76 61 | 6c 20 3d 20 72 65 5f 6d | va|l = re_m| |00005e10| 61 74 63 68 5f 32 20 28 | 70 62 75 66 70 2c 20 73 |atch_2 (|pbufp, s| |00005e20| 74 72 69 6e 67 31 2c 20 | 73 69 7a 65 31 2c 20 73 |tring1, |size1, s| |00005e30| 74 72 69 6e 67 32 2c 20 | 73 69 7a 65 32 2c 20 73 |tring2, |size2, s| |00005e40| 74 61 72 74 70 6f 73 2c | 20 72 65 67 73 2c 20 6d |tartpos,| regs, m| |00005e50| 73 74 6f 70 29 3b 0d 20 | 20 20 20 20 20 69 66 20 |stop);. | if | |00005e60| 28 30 20 3c 3d 20 76 61 | 6c 29 0d 09 7b 0d 09 20 |(0 <= va|l)..{.. | |00005e70| 20 69 66 20 28 76 61 6c | 20 3d 3d 20 2d 32 29 0d | if (val| == -2).| |00005e80| 09 20 20 20 20 72 65 74 | 75 72 6e 20 2d 32 3b 0d |. ret|urn -2;.| |00005e90| 09 20 20 72 65 74 75 72 | 6e 20 73 74 61 72 74 70 |. retur|n startp| |00005ea0| 6f 73 3b 0d 09 7d 0d 0d | 23 69 66 64 65 66 20 43 |os;..}..|#ifdef C| |00005eb0| 5f 41 4c 4c 4f 43 41 0d | 20 20 20 20 20 20 61 6c |_ALLOCA.| al| |00005ec0| 6c 6f 63 61 20 28 30 29 | 3b 0d 23 65 6e 64 69 66 |loca (0)|;.#endif| |00005ed0| 20 2f 2a 20 43 5f 41 4c | 4c 4f 43 41 20 2a 2f 0d | /* C_AL|LOCA */.| |00005ee0| 0d 20 20 20 20 61 64 76 | 61 6e 63 65 3a 0d 20 20 |. adv|ance:. | |00005ef0| 20 20 20 20 69 66 20 28 | 21 72 61 6e 67 65 29 20 | if (|!range) | |00005f00| 62 72 65 61 6b 3b 0d 20 | 20 20 20 20 20 69 66 20 |break;. | if | |00005f10| 28 72 61 6e 67 65 20 3e | 20 30 29 20 72 61 6e 67 |(range >| 0) rang| |00005f20| 65 2d 2d 2c 20 73 74 61 | 72 74 70 6f 73 2b 2b 3b |e--, sta|rtpos++;| |00005f30| 20 65 6c 73 65 20 72 61 | 6e 67 65 2b 2b 2c 20 73 | else ra|nge++, s| |00005f40| 74 61 72 74 70 6f 73 2d | 2d 3b 0d 20 20 20 20 7d |tartpos-|-;. }| |00005f50| 0d 20 20 72 65 74 75 72 | 6e 20 2d 31 3b 0d 7d 0d |. retur|n -1;.}.| |00005f60| 0c 0d 23 69 66 6e 64 65 | 66 20 65 6d 61 63 73 20 |..#ifnde|f emacs | |00005f70| 20 20 2f 2a 20 65 6d 61 | 63 73 20 6e 65 76 65 72 | /* ema|cs never| |00005f80| 20 75 73 65 73 20 74 68 | 69 73 20 2a 2f 0d 69 6e | uses th|is */.in| |00005f90| 74 0d 72 65 5f 6d 61 74 | 63 68 20 28 70 62 75 66 |t.re_mat|ch (pbuf| |00005fa0| 70 2c 20 73 74 72 69 6e | 67 2c 20 73 69 7a 65 2c |p, strin|g, size,| |00005fb0| 20 70 6f 73 2c 20 72 65 | 67 73 29 0d 20 20 20 20 | pos, re|gs). | |00005fc0| 20 73 74 72 75 63 74 20 | 72 65 5f 70 61 74 74 65 | struct |re_patte| |00005fd0| 72 6e 5f 62 75 66 66 65 | 72 20 2a 70 62 75 66 70 |rn_buffe|r *pbufp| |00005fe0| 3b 0d 20 20 20 20 20 63 | 68 61 72 20 2a 73 74 72 |;. c|har *str| |00005ff0| 69 6e 67 3b 0d 20 20 20 | 20 20 69 6e 74 20 73 69 |ing;. | int si| |00006000| 7a 65 2c 20 70 6f 73 3b | 0d 20 20 20 20 20 73 74 |ze, pos;|. st| |00006010| 72 75 63 74 20 72 65 5f | 72 65 67 69 73 74 65 72 |ruct re_|register| |00006020| 73 20 2a 72 65 67 73 3b | 0d 7b 0d 20 20 72 65 74 |s *regs;|.{. ret| |00006030| 75 72 6e 20 72 65 5f 6d | 61 74 63 68 5f 32 20 28 |urn re_m|atch_2 (| |00006040| 70 62 75 66 70 2c 20 30 | 2c 20 30 2c 20 73 74 72 |pbufp, 0|, 0, str| |00006050| 69 6e 67 2c 20 73 69 7a | 65 2c 20 70 6f 73 2c 20 |ing, siz|e, pos, | |00006060| 72 65 67 73 2c 20 73 69 | 7a 65 29 3b 0d 7d 0d 23 |regs, si|ze);.}.#| |00006070| 65 6e 64 69 66 20 2f 2a | 20 65 6d 61 63 73 20 2a |endif /*| emacs *| |00006080| 2f 0d 0d 2f 2a 20 4d 61 | 78 69 6d 75 6d 20 73 69 |/../* Ma|ximum si| |00006090| 7a 65 20 6f 66 20 66 61 | 69 6c 75 72 65 20 73 74 |ze of fa|ilure st| |000060a0| 61 63 6b 2e 20 20 42 65 | 79 6f 6e 64 20 74 68 69 |ack. Be|yond thi| |000060b0| 73 2c 20 6f 76 65 72 66 | 6c 6f 77 20 69 73 20 61 |s, overf|low is a| |000060c0| 6e 20 65 72 72 6f 72 2e | 20 20 2a 2f 0d 0d 69 6e |n error.| */..in| |000060d0| 74 20 72 65 5f 6d 61 78 | 5f 66 61 69 6c 75 72 65 |t re_max|_failure| |000060e0| 73 20 3d 20 32 30 30 30 | 3b 0d 0d 73 74 61 74 69 |s = 2000|;..stati| |000060f0| 63 20 69 6e 74 20 62 63 | 6d 70 5f 74 72 61 6e 73 |c int bc|mp_trans| |00006100| 6c 61 74 65 28 29 3b 0d | 2f 2a 20 4d 61 74 63 68 |late();.|/* Match| |00006110| 20 74 68 65 20 70 61 74 | 74 65 72 6e 20 64 65 73 | the pat|tern des| |00006120| 63 72 69 62 65 64 20 62 | 79 20 50 42 55 46 50 0d |cribed b|y PBUFP.| |00006130| 20 20 20 61 67 61 69 6e | 73 74 20 64 61 74 61 20 | again|st data | |00006140| 77 68 69 63 68 20 69 73 | 20 74 68 65 20 76 69 72 |which is| the vir| |00006150| 74 75 61 6c 20 63 6f 6e | 63 61 74 65 6e 61 74 69 |tual con|catenati| |00006160| 6f 6e 20 6f 66 20 53 54 | 52 49 4e 47 31 20 61 6e |on of ST|RING1 an| |00006170| 64 20 53 54 52 49 4e 47 | 32 2e 0d 20 20 20 53 49 |d STRING|2.. SI| |00006180| 5a 45 31 20 61 6e 64 20 | 53 49 5a 45 32 20 61 72 |ZE1 and |SIZE2 ar| |00006190| 65 20 74 68 65 20 73 69 | 7a 65 73 20 6f 66 20 74 |e the si|zes of t| |000061a0| 68 65 20 74 77 6f 20 64 | 61 74 61 20 73 74 72 69 |he two d|ata stri| |000061b0| 6e 67 73 2e 0d 20 20 20 | 53 74 61 72 74 20 74 68 |ngs.. |Start th| |000061c0| 65 20 6d 61 74 63 68 20 | 61 74 20 70 6f 73 69 74 |e match |at posit| |000061d0| 69 6f 6e 20 50 4f 53 2e | 0d 20 20 20 44 6f 20 6e |ion POS.|. Do n| |000061e0| 6f 74 20 63 6f 6e 73 69 | 64 65 72 20 6d 61 74 63 |ot consi|der matc| |000061f0| 68 69 6e 67 20 70 61 73 | 74 20 74 68 65 20 70 6f |hing pas|t the po| |00006200| 73 69 74 69 6f 6e 20 4d | 53 54 4f 50 2e 0d 0d 20 |sition M|STOP... | |00006210| 20 20 49 66 20 70 62 75 | 66 70 2d 3e 66 61 73 74 | If pbu|fp->fast| |00006220| 6d 61 70 20 69 73 20 6e | 6f 6e 7a 65 72 6f 2c 20 |map is n|onzero, | |00006230| 74 68 65 6e 20 69 74 20 | 68 61 64 20 62 65 74 74 |then it |had bett| |00006240| 65 72 20 62 65 20 75 70 | 20 74 6f 20 64 61 74 65 |er be up| to date| |00006250| 2e 0d 0d 20 20 20 54 68 | 65 20 72 65 61 73 6f 6e |... Th|e reason| |00006260| 20 74 68 61 74 20 74 68 | 65 20 64 61 74 61 20 74 | that th|e data t| |00006270| 6f 20 6d 61 74 63 68 20 | 61 72 65 20 73 70 65 63 |o match |are spec| |00006280| 69 66 69 65 64 20 61 73 | 20 74 77 6f 20 63 6f 6d |ified as| two com| |00006290| 70 6f 6e 65 6e 74 73 0d | 20 20 20 77 68 69 63 68 |ponents.| which| |000062a0| 20 61 72 65 20 74 6f 20 | 62 65 20 72 65 67 61 72 | are to |be regar| |000062b0| 64 65 64 20 61 73 20 63 | 6f 6e 63 61 74 65 6e 61 |ded as c|oncatena| |000062c0| 74 65 64 0d 20 20 20 69 | 73 20 73 6f 20 74 68 69 |ted. i|s so thi| |000062d0| 73 20 66 75 6e 63 74 69 | 6f 6e 20 63 61 6e 20 62 |s functi|on can b| |000062e0| 65 20 75 73 65 64 20 64 | 69 72 65 63 74 6c 79 20 |e used d|irectly | |000062f0| 6f 6e 20 74 68 65 20 63 | 6f 6e 74 65 6e 74 73 20 |on the c|ontents | |00006300| 6f 66 20 61 6e 20 45 6d | 61 63 73 20 62 75 66 66 |of an Em|acs buff| |00006310| 65 72 2e 0d 0d 20 20 20 | 2d 31 20 69 73 20 72 65 |er... |-1 is re| |00006320| 74 75 72 6e 65 64 20 69 | 66 20 74 68 65 72 65 20 |turned i|f there | |00006330| 69 73 20 6e 6f 20 6d 61 | 74 63 68 2e 20 20 2d 32 |is no ma|tch. -2| |00006340| 20 69 73 20 72 65 74 75 | 72 6e 65 64 20 69 66 20 | is retu|rned if | |00006350| 74 68 65 72 65 20 69 73 | 0d 20 20 20 61 6e 20 65 |there is|. an e| |00006360| 72 72 6f 72 20 28 73 75 | 63 68 20 61 73 20 6d 61 |rror (su|ch as ma| |00006370| 74 63 68 20 73 74 61 63 | 6b 20 6f 76 65 72 66 6c |tch stac|k overfl| |00006380| 6f 77 29 2e 20 20 4f 74 | 68 65 72 77 69 73 65 20 |ow). Ot|herwise | |00006390| 74 68 65 20 76 61 6c 75 | 65 20 69 73 20 74 68 65 |the valu|e is the| |000063a0| 20 6c 65 6e 67 74 68 0d | 20 20 20 6f 66 20 74 68 | length.| of th| |000063b0| 65 20 73 75 62 73 74 72 | 69 6e 67 20 77 68 69 63 |e substr|ing whic| |000063c0| 68 20 77 61 73 20 6d 61 | 74 63 68 65 64 2e 20 20 |h was ma|tched. | |000063d0| 2a 2f 0d 0d 69 6e 74 0d | 72 65 5f 6d 61 74 63 68 |*/..int.|re_match| |000063e0| 5f 32 20 28 70 62 75 66 | 70 2c 20 73 74 72 69 6e |_2 (pbuf|p, strin| |000063f0| 67 31 2c 20 73 69 7a 65 | 31 2c 20 73 74 72 69 6e |g1, size|1, strin| +--------+-------------------------+-------------------------+--------+--------+ Only 25.0 KB of data is shown above.